On 2009-04-17 16:49, Jesse Aldridge wrote:
import re
s1 = "I am an american"
s2 = "I am american an "
for s in [s1, s2]:
print re.findall(" (am|an) ", s)
# Results:
# ['am']
# ['am', 'an']
-------
I want the results to be the same for each string. What am I doing
wrong?
findall() finds non-overlapping matches. " am an " would work, but not
" am an ".
Instead of including explicit spaces in your pattern, I suggest using the \b
"word boundary" special instruction.
>>> for s in [s1, s2]:
... print re.findall(r"\b(am|an)\b", s)
...
['am', 'an']
['am', 'an']
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
--
http://mail.python.org/mailman/listinfo/python-list