import re as regex
pattern = regex.compile(r'\w[\w\/\\-]*(\s*[\w\/\\-])*')
print pattern.findall("HELLO-WORLD")
这只打印出['']
正则表达式在在线正则表达式测试器上正常工作。为什么不匹配?
答案 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
隐藏它。