java 中的复杂正则表达式分隔符
Complex regex separator in java
我想用非常具体的分隔符拆分字符串。
前任。文字:
hello%!%!%;toto%!%;titi%!%!%;tata%;big%;level!%%;popo
分隔符必须是“%;”并且必须是:
- 具体按照这个顺序
- 前面没有 %!
所以在这个例子中,我的分割会 return :
[hello%!%!%;toto%!%;titi%!%!%;tata][大][等级!%][popo]
到目前为止,我的正则表达式如下所示:
[^%!](%;)
但不匹配最后一个分隔符,前两个也匹配%之前的字符;
如有任何帮助,我们将不胜感激。
你写了 [^%!]
。这意味着:任何不在列表 %!
中的字符。这不是你想要的。
您可以使用负数 "look behind" 表达式:(?<!...)
其中 ...
是匹配模式
所以你的整个正则表达式将是:(?<!%!)(%;)
我想用非常具体的分隔符拆分字符串。
前任。文字:
hello%!%!%;toto%!%;titi%!%!%;tata%;big%;level!%%;popo
分隔符必须是“%;”并且必须是:
- 具体按照这个顺序
- 前面没有 %!
所以在这个例子中,我的分割会 return : [hello%!%!%;toto%!%;titi%!%!%;tata][大][等级!%][popo]
到目前为止,我的正则表达式如下所示:
[^%!](%;)
但不匹配最后一个分隔符,前两个也匹配%之前的字符;
如有任何帮助,我们将不胜感激。
你写了 [^%!]
。这意味着:任何不在列表 %!
中的字符。这不是你想要的。
您可以使用负数 "look behind" 表达式:(?<!...)
其中 ...
是匹配模式
所以你的整个正则表达式将是:(?<!%!)(%;)