我试图将regex模式分割成多行,但似乎只提取最后一行中指定的模式。下面的示例说明了问题:
>>> o = re.compile(r'\btext1\b\
... |\btext2\b\
... |\btext3\b')
>>> print o.search(x)
None
>>> x
'text1'
>>> x = 'text3'
>>> print o.search(x)
<_sre.SRE_Match object at 0x025E4CD0>
>>> x = 'text2'
>>> print o.search(x)
None
如何跨多行写入这行:
>>> o = re.compile(r'\btext1\b|\btext2\b|\btext3\b')
如果您使用
\
在源代码的行尾继续一个字符串,则放在那里的换行符将是该字符串的一部分。你知道吗我建议使用以下语法之一:
或者
或者使用
re.VERBOSE
标志作为@falsetru在他的回答中提出的,以便能够插入空格字符(如换行符),在编译模式时,regexp模式解析器将跳过这些字符。你知道吗调试提示:您可以输出
o.pattern
:检查编译的regexp所基于的模式。这会让你知道你的问题所在。你知道吗
使用^{} (或
re.X
)标志。你知道吗或者将
(?x)
放入正则表达式中。你知道吗相关问题 更多 >
编程相关推荐