正则表达式,用于匹配某些内容(如果它前面没有其他内容)
使用Java中的正则表达式,我想编写一个正则表达式,当且仅当模式前面没有某些字符时,该正则表达式才会匹配。例如:
String s = "foobar barbar beachbar crowbar bar ";
我想匹配 if 前面没有 .因此,输出将是:bar
foo
barbar
beachbar
crowbar
bar
使用Java中的正则表达式,我想编写一个正则表达式,当且仅当模式前面没有某些字符时,该正则表达式才会匹配。例如:
String s = "foobar barbar beachbar crowbar bar ";
我想匹配 if 前面没有 .因此,输出将是:bar
foo
barbar
beachbar
crowbar
bar
您希望像这样使用:negative lookbehind
\w*(?<!foo)bar
where 表示“仅当在此点之前没有”x“时”。(?<!x)
有关详细信息,请参阅正则表达式 - 查找。
编辑:添加了捕获之前的字符(例如“海滩”)。\w*
另一种选择是首先匹配可选的单词字符,后跟 ,当匹配时,检查直接向左的不是 。bar
foobar
查看后退断言将在首先匹配后运行。bar
\w*bar(?<!foobar)
\w*
匹配 0 个以上的单词字符bar
按字面意思匹配(?<!foobar)
消极的看,从当前位置断言不是直接向左。foobar