java 中的复杂正则表达式分隔符

Complex regex separator in java

我想用非常具体的分隔符拆分字符串。
前任。文字:

hello%!%!%;toto%!%;titi%!%!%;tata%;big%;level!%%;popo

分隔符必须是“%;”并且必须是:

所以在这个例子中,我的分割会 return : [hello%!%!%;toto%!%;titi%!%!%;tata][大][等级!%][popo]

到目前为止,我的正则表达式如下所示:

[^%!](%;)

但不匹配最后一个分隔符,前两个也匹配%之前的字符;

如有任何帮助,我们将不胜感激。

你写了 [^%!]。这意味着:任何不在列表 %! 中的字符。这不是你想要的。

您可以使用负数 "look behind" 表达式:(?<!...) 其中 ... 是匹配模式

所以你的整个正则表达式将是:(?<!%!)(%;)