我的代码段:
compileObj = re.compile('\b%s\b'%word)
result = compileObj.search(sentence[j])
print result.groups()
word = foo
sentence = foo bar (foo) bar foo-bar foo_bar foo'bar bar-foo bar, foo
但是结果的值为None,我不知道为什么。
请让我知道我是否缺少一些非常基本的内容。
答案 0 :(得分:0)
>>> import re
>>> sentence = "foo bar (foo) bar foo-bar foo_bar foo'bar bar-foo bar, foo"
>>> word = 'foo'
>>> compileObj = re.compile(r'\b%s\b' % re.escape(word))
>>> result = compileObj.search(sentence)
>>> print result.group()
foo
>>> print compileObj.findall(sentence)
['foo', 'foo', 'foo', 'foo', 'foo', 'foo']
可能的误解和相应的解释:
r'\bfoo\b' to make python not interpret the special characters (in this example the backslash
`),然后将它们原样传递给正则表达式库。re.escape
。.search()
仅找到第一个匹配项。要找到所有匹配项,请使用.findall()
或.finditer()