当添加re.VERBOSE时,包含有意义的空格的Regexes会中断,显然是因为re.VERBOSE“帮助”了“问题摘要”中的(有意义的)空格,以及所有糟糕的、没有意义的空格(例如,多行模式中的填充和换行符)。(我对多行re.VERBOSE的使用是不可商量的--这实际上是对一个庞大的多行正则表达式的大规模简化,其中re.VERBOSE只是保持理智所必需的。)
import re
re.match(r'''Issue Summary.*''', 'Issue Summary: fails''', re.U|re.VERBOSE)
# No match!
re.match(r'''Issue Summary.*''', 'Issue Summary: passes''', re.U)
<_sre.SRE_Match object at 0x10ba36030>
re.match(r'Issue Summary.*', 'Issue Summary: passes''', re.U)
<_sre.SRE_Match object at 0x10b98ff38>是否有更明智的方法来编写re.vERBOSE友好的模式,其中包含有意义的空间,而不是用'\s‘或'.’替换我的模式中的每个实例,这不仅是丑陋的,而且违反直觉,而且很难自动化?
re.match(r'Issue\sSummary.*''', 'Issue Summary: fails', re.VERBOSE)
<_sre.SRE_Match object at 0x10ba36030>
re.match(r'Issue.Summary.*''', 'Issue Summary: fails', re.VERBOSE)
<_sre.SRE_Match object at 0x10b98ff38>(顺便说一句,这是Python 2和3上的一个有用的docbug。
发布于 2017-11-17 00:42:48
如果使用re.VERBOSE,那么我认为除了更改正则表达式字符串之外别无选择。不过,我建议以下几点之一:
r'abc\ def'或者:
r'abc[ ]def'r'\ '和'[ ]'都匹配一个空格字符(不是任何空格,而是实际的空格)。注意,没有前面的r,反斜杠字符需要加倍,即\\。
https://stackoverflow.com/questions/47341411
复制相似问题