gpt4 book ai didi

Python 正则表达式 - 命名组不完全匹配

转载 作者:行者123 更新时间:2023-11-28 22:42:08 24 4
gpt4 key购买 nike

我有以下 Python 正则表达式模式:

(?P<key>.*)(?P<operator><=>|=|>=|>|<=|<|!=|<>)(?P<value>.*)

我的输入字符串示例是:this!=that,但是 != 没有作为一个组进行匹配:

{u'operator': '=', u'key': 'this!', u'value': 'that'}

你能帮我在这个例子中使用上面的正则表达式模式匹配完整的运算符 != 并解释为什么我的原始模式不起作用吗?提前致谢!

最佳答案

您需要对第一个捕获组使用惰性匹配,否则,.*将“吃掉”第一个符号,因为它是贪婪的,并且还可以匹配您的替代品中的任何符号:

(?P<key>.*?)(?P<operator><=>|!=|>=|<=|<>|[=><])(?P<value>.*)

参见 demo

我还重新排列了备选方案,使它们从最长到最短。这可能很重要,因为正则表达式是从左到右处理的,因此,我们应该首先检查最长的选项。

最后三个备选方案可以缩减为一个字符类[=><]以减少回溯。

关于Python 正则表达式 - 命名组不完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31967105/

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