因此,对于java中的正则表达式,我想编写一个正则表达式,当且仅当模式前面没有某些字符时才匹配.例如:
String s = "foobar barbar beachbar crowbar bar ";
Run Code Online (Sandbox Code Playgroud)
如果bar之前没有foo,我想匹配.所以输出将是:
barbar
beachbar
crowbar
bar
Run Code Online (Sandbox Code Playgroud)
我知道这可能是一个非常简单的问题.我正在努力学习正则表达式,但与此同时我需要一些工作才能正常工作.
Ada*_*fer 221
你想这样使用negative lookbehind:
\w*(?<!foo)bar
Run Code Online (Sandbox Code Playgroud)
其中的(?<!x)意思是"只有在此之前没有"x".
有关详细信息,请参阅正则表达式 -查找.
编辑:添加\w*以捕获之前的字符(例如"海滩").
另一种选择是首先匹配可选单词字符bar,然后匹配,当匹配时检查直接左边的不是foobar。
后行断言将在bar首先匹配后运行。
\w*bar(?<!foobar)
Run Code Online (Sandbox Code Playgroud)
\w*匹配0+单词字符bar按字面意思匹配(?<!foobar)负lookbehind,断言从当前位置foobar不直接向左。