Python正则表达式无法按预期工作

Dew*_*rld 6 python regex python-2.7

这是我想在python2.7上尝试的原始正则表达式

链接

在我的python2.7命令行中,我的代码

>>> import re
>>> r = r'(\.+)'
>>> str = 'hello... how are you? Im fine...'
>>> type(re.match(r, str, re.I))    # a mismatch
<type 'NoneType'>
Run Code Online (Sandbox Code Playgroud)

我应该做什么修改才能在python上运行?

hlt*_*hlt 8

re.match尝试在字符串的开头匹配.因为它在开始时不匹配,所以re.match返回None.使用re.search(返回第一个匹配,字符串中的任何位置)或re.finditer(返回产生所有匹配的迭代器):

>>> import re
>>> r = r'(\.+)'
>>> data = 'hello... how are you? Im fine...'
Run Code Online (Sandbox Code Playgroud)

re.match

>>> re.match(r, data, re.I) # None
Run Code Online (Sandbox Code Playgroud)

re.search

>>> m = re.search(r, data, re.I) # a single match
>>> m
<_sre.SRE_Match object at 0x12345678>
>>> m.group(1)
'...'
Run Code Online (Sandbox Code Playgroud)

re.finditer

>>> for m in re.finditer(r, data, re.I): # all matches
...     print(m.group(1))
Run Code Online (Sandbox Code Playgroud)

输出

...
...
Run Code Online (Sandbox Code Playgroud)

其他说明

  • 不要为变量命名str,因为它会影响内置变量.我已将其重命名为data.
  • 你不需要re.I这里(我在示例中保留了它),因为(\.+)不匹配关心案例的任何字符(.不是一个正确的字母)