假设我有一个字符串“foobar”,我使用“^ a \ s *”来匹配“a”。
有没有办法轻易让“foobar”归来? (什么不匹配)
我想使用正则表达式来查找命令字,并使用正则表达式从字符串中删除命令字。
我知道如何使用以下内容执行此操作:
mystring[:regexobj.start()] + email[regexobj.end():]
但如果我有多场比赛,那就会崩溃。
谢谢!
答案 0 :(得分:5)
使用re.sub
:
import re
s = "87 foo 87 bar"
r = re.compile(r"87\s*")
s = r.sub('', s)
print s
结果:
foo bar
答案 1 :(得分:2)
来自http://docs.python.org/library/re.html#re.split
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
所以你的例子就是
>>> re.split(r'(^a\s*)', "a foobar")
['', 'a ', 'foobar']
此时您可以将奇数项(您的匹配项)与偶数项(其余项)分开。
>>> l = re.split(r'(^a\s*)', "a foobar")
>>> l[1::2] # matching strings
['a ']
>>> l[::2] # non-matching strings
['', 'foobar']
这比re.sub有优势,因为你可以告诉你,发现的时间,地点和数量。
答案 2 :(得分:1)
>>> import re
>>> re.sub("87\s*", "", "87 foo 87 bar")
'foo bar'
答案 3 :(得分:1)
除了分割或分离之外,您可以使用re.sub并在找到模式时替换空白的空字符串(“”)。例如......
>>> 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'