用于在Java中排除超过2“==”的模式的正则表达式

时间:2013-09-25 17:43:46

标签: java regex

我需要提取一个或多于2个等于(即==,===,===,====等)和后续文本之间的任何文本,直到它搜索下一个或多于2个等于并存储在数组列表中。

前:

==Notes and references== {{Refli=st|35e=m}}=====Bibliography=====Text starts

预期产出:

[==Notes and references== {{Refli=st|35e=m}}, =====Bibliography=====Text starts]

我有正则表达式语法:

"==+([^==+]*)==+([^==+]*)"; 

我遇到输出,直到遇到单=:

[==Notes and references== {{Refli, =====Bibliography=====Text starts]

1 个答案:

答案 0 :(得分:2)

[^==+]*匹配除=+之外的所有字符。这不是你想要的。

在这里,使用类似的东西可能更容易:

"==+(.*?)==+(.*?)(?===|$)";

这样您就可以在多个=之间允许单=个签名。

(?===|$)是一个积极的前瞻((?= ... )),并确保前面有两个连续的=符号或者字符串的结尾。


或者,如果你想特别否定两者之间部分的==+,你可以使用否定前瞻:

"==+((?:(?!==+).)*)==+((?:(?!==+).)*)";

此语法((?:(?!==+).)*)将检查每个字符,并确保它不是==(或更多)。