单引号捕获在三引号字符串中

时间:2017-01-25 07:26:42

标签: javascript regex

假设这个正则表达式是Javascript:

/(?:"""([\s\S]*?)""")/g

我怎么能这样做,以便以下两个捕获工作?

"""foo"""

捕获:

foo

但也......

"""foo "bar baz""""

捕获:

foo "bar baz"

注意: Atm我不知道如何捕捉第二个例子。

换句话说,我需要确保我想要捕获的最终报价不会打破三重报价模式,即只匹配前三个三重引号而不是最后三个。

1 个答案:

答案 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]);
}




Regex explanation here.