假设这个正则表达式是Javascript:
/(?:"""([\s\S]*?)""")/g
我怎么能这样做,以便以下两个捕获工作?
"""foo"""
捕获:
foo
但也......
"""foo "bar baz""""
捕获:
foo "bar baz"
注意: Atm我不知道如何捕捉第二个例子。
换句话说,我需要确保我想要捕获的最终报价不会打破三重报价模式,即只匹配前三个三重引号而不是最后三个。
答案 0 :(得分:1)
您可以使用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]);
}