【问题标题】:Complex regex separator in javajava中复杂的正则表达式分隔符
【发布时间】:2020-04-02 15:43:53
【问题描述】:

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

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

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

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

所以在本例中,我的拆分将返回: [hello%!%!%;toto%!%;titi%!%!%;tata] [big] [level!%] [popo]

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

[^%!](%;)

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

任何帮助将不胜感激。

【问题讨论】:

  • [^%!] 是一个字符类,即它只匹配一个字符,该字符可以是除%! 之外的任何字符。你可能需要一个负面的回顾:(?<!%!).

标签: regex split separator


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多