我想使用以下格式的正则表达式文件进行解析,以便检索content1a,content1b,content2a,content2b等。
===
content1a
===
content1b
===
content2a
===
content2b
重要提示:文件末尾不包含===
这个正则表达式几乎可以完成工作:
/[===[\s\S]*?===[.]*/g
但不检索最后一个内容(content2b)
谢谢你的帮忙
您尝试的模式使用字符类,该字符类也可以写为[\s\S]*?===
或([^]*?)===
它期望===
最后出现,这就是为什么is不匹配最后一个内容。
但是,例如,如果您有5次等号,=====
您还将匹配最后2个等号,因此您可以添加换行符来防止这种情况。
而不是使用[\s\S]*?
你可以使用一个捕获组来捕获不启动的所有行===
^===\n((?:(?!===\n).*\n?)*)
const regex = /^===\n((?:(?!===\n).*\n?)*)/gm;
const str = `===
content1a
===
content1b
===
content2a
content2a
content2a
===
content2b`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
console.log(m[1]);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句