【发布时间】:2016-06-18 21:26:14
【问题描述】:
我有一种情况,我必须从表达式字符串中选择变量,如下所示。
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() 的想法,这样我就可以使用预编译的正则表达式。
【问题讨论】:
-
更容易使用
yourString.split("||")并回避更小的模式。 -
ifly6 - 我同意简单的部分,但我现在远离递归。如果这没有帮助,我可能会回到那个位置。
-
一月 - 不。那也行不通。请注意,我使用的是基于 Perl 的 java regex。
标签: java regex pattern-matching