Determining The Unmatched Portion Of A String Using A Regex In Python
Suppose I have a string 'a foobar' and I use '^a\s*' to match 'a '. Is there a way to easily get 'foobar' returned? (What was NOT matched) I want to use a regex to look for a comma
Solution 1:
Use re.sub
:
import re
s = "87 foo 87 bar"
r = re.compile(r"87\s*")
s = r.sub('', s)
print s
Result:
foo bar
Solution 2:
from http://docs.python.org/library/re.html#re.split
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
so your example would be
>>> re.split(r'(^a\s*)', "a foobar")
['', 'a ', 'foobar']
at which point you can separate the odd items (your match) from the even items (the rest).
>>> l = re.split(r'(^a\s*)', "a foobar")
>>> l[1::2] # matching strings
['a ']
>>> l[::2] # non-matching strings
['', 'foobar']
This has the advantage over re.sub in that you can tell, when, where, and how many matches were found.
Solution 3:
>>>import re>>>re.sub("87\s*", "", "87 foo 87 bar")
'foo bar'
Solution 4:
Instead of splitting or separating, maybe you can use re.sub and substitute a blank, empty string ("") whenever you find the pattern. For example...
>>>import re>>>re.sub("^a\s*", "","a foobar")
'foobar''
>>>re.sub("a\s*", "","a foobar a foobar")
'foobr foobr'
>>>re.sub("87\s*", "","87 foo 87 bar")
'foo bar'
Post a Comment for "Determining The Unmatched Portion Of A String Using A Regex In Python"