Javascript 简单分隔符之间的匹配,但不匹配分隔符本身

Javascript 简单分隔符之间的匹配,但不匹配分隔符本身,javascript,regex,Javascript,Regex,我正在查看文本文件中的JSON数据。除了使用正则表达式获取引号之间的值之外,我不想做任何事情。我只是把它作为一种帮助练习正则表达式的方法,到了这一点,它看起来应该很简单,但事实证明它不是(至少对我和办公室里的其他一些人来说)。我在正则表达式中轻松地匹配了复杂的URL,所以我对正则表达式并不完全陌生。这对我来说似乎是个奇怪的案子 我试过: /(?:")(.*?)(?:")/ /"(.*?)"/ 还有其他几个,但这些是最接近我的 基本上,我们可以忘记它是JSON,只说我想匹配单词value和st

我正在查看文本文件中的JSON数据。除了使用正则表达式获取引号之间的值之外,我不想做任何事情。我只是把它作为一种帮助练习正则表达式的方法,到了这一点,它看起来应该很简单,但事实证明它不是(至少对我和办公室里的其他一些人来说)。我在正则表达式中轻松地匹配了复杂的URL,所以我对正则表达式并不完全陌生。这对我来说似乎是个奇怪的案子

我试过:

/(?:")(.*?)(?:")/

/"(.*?)"/
还有其他几个,但这些是最接近我的

基本上,我们可以忘记它是JSON,只说我想匹配单词value和stuff,而不是“value”和“stuff”。我尝试的每件事都包含引号,因此我必须在分隔符之后清除字符串,否则字符串就是带引号的“值”

任何帮助都将不胜感激,无论这是简单的还是复杂的,我很想知道!谢谢


更新:好的,我想我会选择
(?解决这个问题有两个选择:

使用捕获组

您可以匹配分隔符并使用捕获组来获取其中的文本。在这种情况下,您的两个正则表达式可以工作,但您需要使用access捕获组1来获取结果()。有关如何执行此操作,请参阅

使用零宽度断言

您可以使用零宽度断言仅匹配其中的文本,而不需要在其周围使用分隔符():

(?
获取引号之间的值

需要记住的一件事是,有效的JSON接受引号内的转义引号。因此,正则表达式在捕获使用

var模式=/“[^”\]*(?:\\.[^”\\]*)*”/g;
风险值数据={
“价值”:“这是”东西“,
“空”:“,
“空”:空,
“数字”:50
};
var-dataString=JSON.stringify(数据);
log(数据字符串);
var matched=dataString.match(模式);

matched.map(item=>console.log(JSON.parse(item)))
您能显示您正在使用的代码以获得结果吗?您是使用捕获组还是使用整个匹配来获得匹配的文本?给定正则表达式,您想要的文本应该在捕获组1中,而整个匹配的文本也将始终包含引号。其中组1包含您想要的内容。除了使用捕获g组,您可以创建零宽度断言:
(?看起来像
(?如果你一次只处理一行文本文件,我想你只会在每行上得到第一个匹配,除非你要求在每行上重复匹配。查找记录在哪里?我在mozilla或w3c引用中找不到。只有前瞻。查找是最新的正则表达式功能,你必须查看最近的正则表达式文档。它现在有多种语言,虽然还不可能全部使用。我知道旧版本的Javascript不支持它。@Garfield910:Lookbehind不受Javascript支持,chrome除外。@Toto Hum,那将是个问题。
(?<=")(.*?)(?=")