gpt4 book ai didi

python - 当包含有意义的空格时,如何编写与 re.VERBOSE 一起使用的模式?

转载 作者:太空宇宙 更新时间:2023-11-04 04:54:40 26 4
gpt4 key购买 nike

当添加 re.VERBOSE 时,包含有意义空格的正则表达式会中断,这显然是因为 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 catch。一旦我就正确的解决方案达成共识,我将把它归档)

最佳答案

如果使用re.VERBOSE,那么我认为除了更改正则表达式字符串之外别无选择。但是,我会建议以下之一:

r'abc\ def'

或:

r'abc[ ]def'

r'\''[ ]' 都匹配一个空格字符(不是任何空格,只是一个实际的空格)。请注意,如果前面没有 r,则反斜杠字符需要加倍,即 \\

关于python - 当包含有意义的空格时,如何编写与 re.VERBOSE 一起使用的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47341411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com