gpt4 book ai didi

python - 建议正则表达式中的子字符串应根据长度排序的建议背后的原因是什么?

转载 作者:太空狗 更新时间:2023-10-29 21:44:33 24 4
gpt4 key购买 nike

最长优先

>>> p = re.compile('supermanutd|supermanu|superman|superm|super')

最短优先

>>> p = re.compile('super|superm|superman|supermanu|supermanutd')

为什么首选最长的第一个正则表达式?

最佳答案

正则表达式中的替代项按照您提供的顺序进行测试,因此如果第一个分支匹配,则 Rx 不会检查其他分支。如果您只需要测试匹配,这并不重要,但如果您想根据匹配提取文本,那么这很重要。

只有当较短的字符串是较长字符串的子字符串时,您才需要按长度排序。例如,当您有文字时:

supermanutd
supermanu
superman
superm

然后在您的第一个 Rx 中您将获得:

>>> regex.findall(string)
[u'supermanutd', u'supermanu', u'superman', u'superm']

但是对于第二个 Rx:

>>> regex.findall(string)
[u'super', u'super', u'super', u'super', u'super']

http://www.pythonregex.com/ 测试你的正则表达式

关于python - 建议正则表达式中的子字符串应根据长度排序的建议背后的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5787670/

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