【问题求助】findall函数使用re.S时,待匹配项字节数超过30所造成的差异
一、源代码
import re
exp = '一'+r'[\u4e00-\u9fa5]*?'+'事情'
pattern = re.compile(exp)
c = '一一期去的事情一事情,作些怪的事情,作到不一样的事情,例如制作些玩一物事情作些事情'
print(pattern.findall(c, re.S))
# ['一样的事情', '一物事情']
1.有re.S输出的结果
['一样的事情', '一物事情']
2.无re.S输出的结果
['一一期去的事情', '一事情', '一样的事情', '一物事情']
二.目标项前的字符串长度对结果产生了影响
当第一个目标项前不超过15个汉字(30个字节)时
import re
exp = '一'+r'[\u4e00-\u9fa5]*?'+'事情'
c = '二三四五六七八九十二三四五六七一些事情'
print(re.compile(exp).findall(c, re.S))
# []
当第一个目标项前超过15个汉字(30个字节)时
import re
exp = '一'+r'[\u4e00-\u9fa5]*?'+'事情'
c = '二三四五六七八九十二三四五六七八一些事情'
print(re.compile(exp).findall(c, re.S))
# ['一些事情']
三、问题
1.对于不含有换行符的字符串,为什么加上“re.S”后会对findall函数匹配的结果产生影响?
2.为什么目标项前的字符串长度会影响匹配结果?