在 Javascript 中假设这个正则表达式:
/(?:"""([\s\S]*?)""")/g
我怎样才能做到,以便以下两个捕获都有效?
"""foo"""
捕捉:
foo
还有……
"""foo "bar baz""""
捕捉:
foo "bar baz"
?
注意: Atm 我不知道如何捕获第二个示例。
换句话说,我需要确保我要捕获的内容中的最终引号不会破坏三引号模式,即只匹配前三个三引号而不是最后三个。
最佳答案
您可以使用 negative lookahead assertion匹配子字符串中的最后一个 "
。
/"""([\s\S]*?)"""(?!")/g
var str = '"""foo""" """foo "bar baz""""';
var regex = /"""([\s\S]*?)"""(?!")/g;
var m;
while (m = regex.exec(str)) {
console.log(m[1]);
}
关于javascript - 用单引号捕获在三引号字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41845715/