首页 > 解决方案 > java中复杂的正则表达式分隔符

问题描述

我想用一个非常具体的分隔符分割一个字符串。
前任。文本 :

你好%!%!%;toto%!%;titi%!%!%;tata%;big%;level!%%;popo

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

所以在这个例子中,我的分割会返回:[hello%!%!%;toto%!%;titi%!%!%;tata] [big] [level!%] [popo]

到目前为止,我的正则表达式看起来像这样:

[^%!](%;)

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

任何帮助,将不胜感激。

标签: regexsplitseparator

解决方案


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

您可以使用否定的“向后看”表达式:匹配模式(?<!...)在哪里...

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


推荐阅读