正则表达式冻结

2024-09-28 20:50:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下正则表达式:

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")

这确实管用! 我不明白这里怎么了。是虫子吗?你知道吗

我使用的是python3.5.2


Tags: 程序rematchdesantapatternsan虫子
1条回答
网友
1楼 · 发布于 2024-09-28 20:50:59
re.compile("([a-z]+-[a-z]+)+$")

对于看起来你正在尝试做的事情,它会工作得更好。您提供的正则表达式被称为pathological,因为-*会导致它带着大量荒谬的可能性跑掉。你知道吗

如果您真的需要多个连字符,-+也可以。你知道吗

相关问题 更多 >