gpt4 book ai didi

Java Regex 用于从表达式中选取操作数

转载 作者:行者123 更新时间:2023-11-30 07:19:03 26 4
gpt4 key购买 nike

我遇到一种情况,我必须从表达式字符串中选择变量,如下所示。

name = 'Bruce Wayne' ||TrackId = 12 || age =9 &&sample = 7 || thisistoolong = 'asda'

我尝试了该模式

"(([\\d\\s\\S&&[^\\&\\|]]+)=([\\d\\s\\S&&[^\\&\\|]]+))"

但它似乎没有扫描整个字符串。

我如何改进我的模式,以便它可以从上面的字符串中选择 'name' 、 'TrackId'、 'age'、 'sample' 和 'thisistoolong' (作为组)。

我知道我可以使用 String.split() 和/或递归一个较小的模式,但我认为如果我可以使用正则表达式来完成这项工作,性能会更好。 (还有更清晰的代码)

编辑:thisistoolong 可以是 Javascript 中的常规变量名称,包含 Javascript 有效值。感谢 Andreas 指出变量值可以包含“||”的边缘情况和 '&&' 。引用 Bohemian 的答案,我想到了使用 Pattern.split() 来代替,这样我就可以使用预编译的正则表达式。

最佳答案

不要纠结于“性能” - 使用 split(使用正则表达式)和模式匹配器的各种解决方案都将具有大致相同的性能,这将是很好的(通常低于 0.1 毫秒)。

这里有一句话:

String[] names = str.split(" =.*?($|\\s*(&&|\\|\\|)\\s*(?=(([^']*'){2})*[^']*$))");

参见ideone演示。

正则表达式中的所有额外内容都允许名称和值包含 &&||

关于Java Regex 用于从表达式中选取操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37901782/

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