gpt4 book ai didi

c# - 用于比较表达式的正则表达式

转载 作者:行者123 更新时间:2023-11-30 20:43:45 27 4
gpt4 key购买 nike

我需要匹配如下字符串:

( anything >= anything )

只有这些比较运算符才能存在: >= <= == != < > 而且它们只能存在一次。我拥有的是:

^\(.+(>=|<=|>|<|==|!=).+\)$

但它匹配诸如 >=!= 之类的内容。我确实浏览了 stackoverflow 问题并进行了谷歌搜索,但找不到正确的解决方案。

你能帮我一下吗?

最佳答案

如果您还计划捕获类似 (myName == "Денис") 的字符串,您需要使用以下正则表达式:

^\((?>(?![<>=]=|!=|[<>]).)*?(?:[<>=]=|!=|[<>])(?>(?![<>=]=|!=|[<>]).)*?\)$

参见 demo on Regexstorm (支持 .NET 正则表达式风格,与 regex101.com 不同)

根据 http://regexhero.net 上的测试结果,它比 Karthik Manchala 的建议要快得多, 由于使用 atomic grouping ( (?> ... ) ), character classes ( [<>=] ),以及惰性匹配 ( *? )。此外,如果 == 前后缺少空格运算符,我的正则表达式仍会捕获表达式。

(?m)^\((?>(?![<>=]=|!=|[<>]).)*?(?:[<>=]=|!=|[<>])(?>(?![<>=]=|!=|[<>]).)*?\)$我的正则表达式每秒产生 15,783 次迭代,而 Karthik 的 (?m)^\(((?!(>=|<=|>|<|==|!=)).)+\s+(>=|<=|>|<|==|!=)\s+((?!(>=|<=|>|<|==|!=)).)+\)$产生每秒 9,204 次迭代的速度。

关于c# - 用于比较表达式的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30108567/

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