我需要提取一个或多于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]
答案 0 :(得分:2)
[^==+]*
匹配除=
和+
之外的所有字符。这不是你想要的。
在这里,使用类似的东西可能更容易:
"==+(.*?)==+(.*?)(?===|$)";
这样您就可以在多个=
之间允许单=
个签名。
(?===|$)
是一个积极的前瞻((?= ... )
),并确保前面有两个连续的=
符号或者字符串的结尾。
或者,如果你想特别否定两者之间部分的==+
,你可以使用否定前瞻:
"==+((?:(?!==+).)*)==+((?:(?!==+).)*)";
此语法((?:(?!==+).)*)
将检查每个字符,并确保它不是==
(或更多)。