如何排除模式匹配中的字符?

时间:2012-11-03 17:43:08

标签: java regex

在示例字符串"a f e $s $a"中,我希望匹配所有没有预先“$”字符的字符。

我试图使用负面预测:

"(?!\\$)[a-z]"

但它也匹配$s$a。我做错了什么?

3 个答案:

答案 0 :(得分:1)

使用负面观察,即(?<!\\$)

"(?<!\\$)[a-z]"

您正在使用否定前瞻,即(?!\\$)

答案 1 :(得分:1)

这是一个 lookahead 断言,这意味着它将匹配任何不是美元符号的字母,也就是所有字母:)

你需要一个后视:

"(?<!\\$)[a-z]"

答案 2 :(得分:0)

负面反馈的正确语法是(?<!...),而不是(?!...),因为这是负面预测。

使用模式

(?<!\\$)[a-z]