我确信这个很容易,但我已经尝试了很多变化,但仍然无法满足我的需要。事情是太贪婪了,我无法让它停止贪婪。
鉴于文本:
test=this=that=more text follows
我只想选择:
test=
我试过以下正则表达式
(\S+)=(\S.*)
(\S+)?=
[^=]{1}
...
谢谢大家。
最佳答案
这里:
// matches "test=, test"
(\S+?)=
or
// matches "test=, test" too
(\S[^=]+)=
您应该考虑使用第二个版本而不是第一个版本。给定你的字符串
"test=this=that=more text follows"
, 版本 1 将匹配 test=this=that=
然后继续解析到字符串的末尾。然后它会回溯,并找到 test=this=
,继续回溯,发现test=
,继续原路返回,落户test=
因为它是最终答案。版本 2 将匹配
test=
然后停止。您可以在更大的搜索(如多行或整个文档匹配)中看到效率提升。
关于正则表达式贪婪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/210080/