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



我想用一个非常具体的分隔符拆分一个字符串。
前任。发短信:

你好%!%!%;托托%!%;蒂蒂%!%!%%;塔塔%;大%;水平!%%;波波

分隔符必须为"%;",并且必须是:

  • 具体按此顺序
  • 前面没有 %!

所以在这个例子中,我的拆分将返回: [你好%!%!%;托托%!%;蒂蒂%!%!%%;塔塔] [大] [水平!%] [波波]

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

[^%!](%;)

但它与最后一个分隔符不匹配,并且第一个分隔符也与 % 之前的字符匹配;

任何帮助将不胜感激。

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

您可以使用否定的"向后看"表达式:(?<!...)其中...是匹配模式

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

最新更新