当前位置: 首页 > 面试题库 >

Python重新无限执行

景鹏飞
2023-03-14
问题内容

我正在尝试执行以下代码:

import re
pattern = r"(\w+)\*([\w\s]+)*/$"
re_compiled = re.compile(pattern)
results = re_compiled.search('COPRO*HORIZON 2000                 HOR')
print(results.groups())

但是Python没有响应。该过程占用100%的CPU,并且不会停止。我已经在Python 2.7.1和Python 3.2上尝试了相同的结果。


问题答案:

由于您有嵌套的量词(),因此正则表达式会遭受灾难性的回溯([...]+)*。由于您的正则表达式要求字符串结尾/(在您的示例中失败),因此正则表达式引擎尝试对字符串进行所有排列都是徒劳的,希望找到匹配的组合。那就是它卡住的地方。

为了说明这一点,让我们假设"A*BCD"它是正则表达式的输入,然后看看会发生什么:

  1. (\w+)火柴A。好。
  2. \*火柴*。好极了。
  3. [\w\s]+火柴BCD。好。
  4. /匹配失败(没有字符可匹配)。好,让我们备份一个字符。
  5. /未能匹配D。哼。让我们再备份一些。
  6. [\w\s]+比赛BC和重复[\w\s]+比赛D
  7. /不匹配。备份。
  8. /未能匹配D。备份更多。
  9. [\w\s]+比赛B和重复[\w\s]+比赛CD
  10. /不匹配。再次备份。
  11. /未能匹配D。再次备份一些。
  12. 如何[\w\s]+比赛B,多次[\w\s]+比赛C,反复[\w\s]+的比赛D?没有?让我们尝试其他事情。
  13. [\w\s]+火柴BC。让我们在这里停止,看看会发生什么。
  14. 达恩,/仍然不匹配D
  15. [\w\s]+火柴B
  16. 仍然没有运气。/不匹配C
  17. 嘿,整个组都是可选的(...)*
  18. 不,/仍然不匹配B
  19. 好我放弃

现在那是一个只有三个字母的字符串。您的计算机大约有30个,尝试所有排列都会使您的计算机一直忙到最后一天。

我想您想做的是获取字符串before / after *,在这种情况下,请使用

pattern = r"(\w+)\*([\w\s]+)$"


 类似资料:
  • 本文向大家介绍Python 实现try重新执行,包括了Python 实现try重新执行的使用技巧和注意事项,需要的朋友参考一下 Python try重新执行: 正确后会跳出循环,一直错误会进入死循环,不适合程序传入参数 以上这篇Python 实现try重新执行就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我是Spark的新生,并尝试完成Spark教程: 指向教程的链接 在本地计算机(Win10 64,Python 3,Spark 2.4.0)上安装它并设置所有环境变量(HADOOP_HOME,SPARK_HOME等)后,我试图通过WordCount.py文件运行一个简单的Spark作业: 从终端运行后: 我得到以下错误。我检查(逐行注释)它在崩溃 知道我应该检查些什么才能使其正常工作吗

  • 我在Spring重新打包时遇到了一个错误:无法执行目标组织。springframework。boot:spring boot maven插件:2.1.7。发布:对项目宠物诊所数据重新打包:目标组织的执行重新打包。springframework。boot:spring boot maven插件:2.1.7。发布:重新打包失败:找不到主类。 即使我用了真的 pom设置好了。由于我没有任何主类,如何解决

  • 问题内容: 我习惯从X开始评估我的。在我中,我使用启动我的窗口管理器。现在,如果我杀死了我的WM(为了测试其他WM),X也将终止,因为脚本到达了EOF。所以我在我的末尾添加了这个: 这样,如果我杀死WM,X不会终止。现在我的问题是:我该如何 无限睡眠 而不是循环睡眠?是否有一个类似于冻结脚本的命令? 最好的祝福 问题答案: 完全按照建议进行操作,并且不会虐待猫。

  • 我正在为vertx使用RX-Ifified API,这个问题必须做一个潜在的无限重试直到成功循环,我想实现,但有困难。我是RXJava新手。 以下是我想做的: null 所以我想我可以使用RXJava的retryWhen()运算符,它允许我在根observable发出错误时发出第二个observable。我认为,第二个可观察的代码可能与上面在步骤1中生成初始观察者的代码相同。 但是,retryWh

  • 连try都没法捕获这种错误吗,程序直接停了 with open('','r', encoding='utf-8') as file: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: ''