正则表达式匹配不是特定子字符串的东西

Joh*_*her 16 c# java regex regex-negation

我正在寻找一个匹配字符串的正则表达式,该字符串以一个子字符串开头,并且不以某个子字符串结尾.

例:

// Updated to be correct, thanks @Apocalisp
^foo.*(?<!bar)$
Run Code Online (Sandbox Code Playgroud)

应匹配任何以"foo"开头并且不以"bar"结尾的内容.我知道[^ ...]语法,但我找不到任何能为字符串而不是单个字符做的事情.

我特意尝试为Java的正则表达式做这个,但我已经遇到过这个问题,所以其他正则表达式引擎的答案也会很棒.

感谢@Kibbee验证这也适用于C#.

Apo*_*isp 9

我想在这种情况下你想要负面的背后照,就像这样:

foo.*(?<!bar)
Run Code Online (Sandbox Code Playgroud)