2024-09-28 20:16:35 发布
网友
对于Java中的正则表达式,我想编写一个正则表达式,当且仅当模式前面没有某些字符时,它才会匹配。例如:
String s = "foobar barbar beachbar crowbar bar ";
如果bar前面没有foo,我想匹配。因此,产出将是:
barbar beachbar crowbar bar
您希望像这样使用negative lookbehind:
negative lookbehind
\w*(?<!foo)bar
其中(?<!x)表示“仅当在此点之前没有“x”时”
(?<!x)
有关更多信息,请参见Regular Expressions - Lookaround
编辑:添加\w*以捕获前面的字符(例如“beach”)
\w*
另一个选项是首先匹配可选的单词字符,后跟bar,当匹配后,检查直接在左边的不是foobar
bar
foobar
lookbehind断言将在首先匹配bar之后运行
\w*bar(?<!foobar)
(?<!foobar)
Regex demo
您希望像这样使用
negative lookbehind
:其中
(?<!x)
表示“仅当在此点之前没有“x”时”有关更多信息,请参见Regular Expressions - Lookaround
编辑:添加
\w*
以捕获前面的字符(例如“beach”)另一个选项是首先匹配可选的单词字符,后跟
bar
,当匹配后,检查直接在左边的不是foobar
lookbehind断言将在首先匹配
bar
之后运行\w*
匹配0+个单词字符bar
逐字匹配(?<!foobar)
负向后看,从当前位置断言foobar
不直接向左李>Regex demo
相关问题 更多 >
编程相关推荐