正则表达式冻结

时间:2018-01-10 23:00:51

标签: python regex

我有以下正则表达式:

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

1 个答案:

答案 0 :(得分:4)

re.compile("([a-z]+-[a-z]+)+$")

会更好地适应你想要做的事情。您提供的正则表达式称为pathological,因为-*会导致它以极其可能的方式逃脱。

如果你真的想要多个连字符,-+也可以。