当我使用关于DOTALL在重新查找()使用Python 3.6时。
我不知道这是不是预期的操作,或者我遗漏了什么,或者是一个bug。
案例1
我尝试使用嵌入换行符的字符串的这个版本。
我希望得到2个匹配的值:m1='abc'和m2='de'
import re
result = re.finditer('.*', 'abc\n de', flags=0)
m1 = result.__next__()
# <_sre.SRE_Match object; span=(0, 3), match='abc'>
m2 = result.__next__()
# <_sre.SRE_Match object; span=(3, 3), match=''>
m3 = result.__next__()
# <_sre.SRE_Match object; span=(4, 7), match=' de'>
m4 = result.__next__()
# <_sre.SRE_Match object; span=(7, 7), match=''>
m2和m4的匹配值是多少?
案例2
我用这个试试关于DOTALL,我希望得到一个匹配,m1='abc\n de'
result = re.finditer('.*', 'abc\n de', flags=re.DOTALL)
m1 = result.__next__()
# <_sre.SRE_Match object; span=(0, 7), match='abc\n de'>
m2 = result.__next__()
# <_sre.SRE_Match object; span=(7, 7), match=''>
额外的火柴怎么了?如何使结果按预期工作?
m1 = 'abc'
m2 = ' de'
... 第二个案子回来了
m1 = 'abc\n de'
没有别的了。