Python正则表达式不匹配但适用于正则表达式测试器

时间:2016-06-08 20:05:35

标签: python regex python-2.7

import re as regex
pattern = regex.compile(r'\w[\w\/\\-]*(\s*[\w\/\\-])*')
print pattern.findall("HELLO-WORLD")

这只打印出['']

正则表达式在在线正则表达式测试器上正常工作。为什么不匹配?

1 个答案:

答案 0 :(得分:1)

您可以使用非捕获组(即(?:\s*[\w/\\-])(?:...)不会形成捕获组,re.findall会返回整个匹配,而不是捕获的组值()):

import re
pattern = re.compile(r'\w[\w/\\-]*(?:\s*[\w/\\-])*')
print(pattern.findall("HELLO-WORLD"))

请参阅IDEONE demo

另请注意,/符号不必以Python正则表达式模式进行转义。

另一点是有一个PyPi正则表达式模块,这就是为什么我建议使用import re而不是用as regex隐藏它。