首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当re.VERBOSE包含有意义的空格时,如何编写用于它们的模式?

当re.VERBOSE包含有意义的空格时,如何编写用于它们的模式?
EN

Stack Overflow用户
提问于 2017-11-17 00:28:17
回答 1查看 1.3K关注 0票数 8

当添加re.VERBOSE时,包含有意义的空格的Regexes会中断,显然是因为re.VERBOSE“帮助”了“问题摘要”中的(有意义的)空格,以及所有糟糕的、没有意义的空格(例如,多行模式中的填充和换行符)。(我对多行re.VERBOSE的使用是不可商量的--这实际上是对一个庞大的多行正则表达式的大规模简化,其中re.VERBOSE只是保持理智所必需的。)

代码语言:javascript
复制
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‘或'.’替换我的模式中的每个实例,这不仅是丑陋的,而且违反直觉,而且很难自动化?

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-17 00:42:48

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

代码语言:javascript
复制
r'abc\ def'

或者:

代码语言:javascript
复制
r'abc[ ]def'

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47341411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档