Java:在正则表达式中组合“not”子句

时间:2011-10-23 23:45:18

标签: java regex

我正在尝试查找包含“]”但没有“|”的子字符串在它面前。我怎么能用正则表达式做到这一点?

3 个答案:

答案 0 :(得分:4)

/(?<!\|)\]/是您需要的正则表达式。

?<!是一个零宽度断言,也称为“负向后看”。这实质上意味着匹配],但“看后面”并断言前一个字符不是|

答案 1 :(得分:2)

/(?<!\|)\]/

使用负面的lookbehind。

对于java:

Pattern regex = Pattern.compile("(?<!\\|)\\[");

答案 2 :(得分:1)

非常简单:[^|]\]

如果您还想在字符串开头匹配[,请使用(^|[^|])\]