gpt4 book ai didi

Python正则表达式问题

转载 作者:行者123 更新时间:2023-12-01 06:11:20 28 4
gpt4 key购买 nike

我正在尝试将以下任何行与 python 中的正则表达式匹配:

RAA RAA

RAA RAA / OOO OOO

RAA RAA / OOO OOO / ROCKY

这些字符串应始终独占一行,因此 RAA RAA 会移到那里。 不会匹配。

我使用 RegExr 想出了这个正则表达式:

^([A-Z]*([ ]?)*([A-Z]?)*([ \/]?)*)*$

这可以很好地匹配所有不同的行,但是如果它尝试匹配 RAA RAA 移动到那里,它会导致 python 挂起。

我不知道为什么。有没有正则表达式专家可能有一些见解?

最佳答案

这个正则表达式太笼统了:它不仅匹配的比你想要的多,而且它有太多的 * ,以至于正则表达式匹配器会不断地无意义地回溯以尝试其他组合。我还没有尝试过使用组合树,但每个不匹配的行至少有数千次尝试。

具体更好,并且确保你不会背弃你所 promise 的事情更好:

^RAA RAA(?: \/ OOO OOO(?: \/ ROCKY)?)?$

如果子字符串不是常量,则应尽可能完整地指定它们,以避免不必要的回溯。

( ?: 是另一个小优化:不要记录括号内的匹配项以供以后提取。如果您确实需要子字符串,我猜您不需要 / 与它们一起,因此只捕获您想要的部分。)

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com