python - 正则表达式卡住

标签 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

最佳答案

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

将更好地完成您正在尝试做的事情。您提供的正则表达式称为 pathological ,因为 -* 导致它以荒谬的可能性逃跑。

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

关于python - 正则表达式卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48197501/

相关文章:

python - Pandas 按重叠箱分组

python - 如何在简单的 Kivy 应用程序中将 Pandas Dataframe 显示为表格?

python - 在odoo的act_window xml中调用或添加函数

python - 防止在正则表达式上回溯以查找非注释行(不是以缩进 '#' 开头)

python - 在使用 simpleITK (python) 注册期间捕获警告

Python 使用元组中的索引组合列表列表中的信息

javascript - 如何在函数中使用 javascript 正则表达式反向引用?

regex - 用于匹配美国电话号码格式的 Oracle 正则表达式

java - 检查一个字符串是否只包含指定的字符

c# - 使用数据注释检查特定电子邮件地址