'NoneType'对象没有属性'groups'

时间:2018-07-04 17:17:11

标签: python regex

我的代码段:

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,我不知道为什么。

请让我知道我是否缺少一些非常基本的内容。

1 个答案:

答案 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()