我有以下正则表达式:
pattern = re.compile("([a-z]+-*[a-z]+)+$")
但是当我跑步时:
pattern.match("departamento-de-archipielago-de-san-andres-providencia-y-santa-catalina")
该行未完成,即程序冻结。
我尝试过:
pattern.match("departamento-de-archipielago-de-san-andres-providencia-y-")
它不起作用
最后,我尝试过:
pattern.match("departamento-de-archipielago-de-san-andres-providencia-y")
这确实有效! 我不明白这里有什么问题。这是一个错误吗?
我正在使用python 3.5.2
答案 0 :(得分:4)
re.compile("([a-z]+-[a-z]+)+$")
会更好地适应你想要做的事情。您提供的正则表达式称为pathological,因为-*
会导致它以极其可能的方式逃脱。
如果你真的想要多个连字符,-+
也可以。