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]
4

1 回答 1

2

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

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

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

这样您就可以=在多个=.

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


或者,如果您想明确否定==+介于两者之间的部分,则可以使用负前瞻:

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

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

于 2013-09-25T17:47:28.140 回答