正则表达式检索具有重复出现模式的单词之间的文本

Regular Expressions retrieve text between words with re-occurring pattern

我有以下文字

"value":"1001174227","fieldLabel":"A field"},{"value":"THE VALUE I NEED","fieldLabel":"Period"}

我的目标是使用正则表达式来提取字符串

THE VALUE I NEED

我试图通过将文本拉到中间来使用标准开始和结束标识符使用正则表达式进行匹配(请参阅下面的我的正则表达式),但它会拉出整个字符串。我认为这是因为重复出现的文本 value.

\"value\":\"(.*)\",\"fieldLabel\":\"Period\"

捕获非引号:

value\":\"([^\"]*)\",\"fieldLabel\":\"Period\"

这会强制唯一的匹配项是紧接在您的目标之前的 value

表达式 [^"] 表示 "any char not a quote",因此将捕获匹配限制为仅引号之间的字符。

参见 live demo 显示目标输入捕获为第 1 组。

使用不情愿的量词 .*? 是行不通的,因为第一个 value 仍然可以匹配。

您可以将其简化为:

"([^"]*)","fieldLabel":"Period"

根据您的其余代码,您可能需要也可能不需要将 " 替换为 \"。例如,您可以使用单引号 (') 来定义正则表达式字符串,从而避免所有丑陋的反斜杠吗?