JScript Regex XML 属性使用子匹配?

JScript Regex XML attribute using Sub-Match?

我正在搜索以下文本:

<add key="Directory" value="" />

这是我的正则表达式:

add key=\x22Directory\x22 value=\x22([^\x22]*)\x22

我想要的输出是:

<add key="Directory" value="blue" />

但是,据我所知,它似乎是在选择整个标签并生成:

<blue />

但是,根据 regex101,它不应该是。我做错了什么?

我也试过:

value=\x22([^\x22]*)\x22

但是,returns:

<add key="Directory" blue />

Regex101 告诉我以下内容。它匹配并注意到第一个捕获组,但仍在替换整个 value=""

您想使用 lookaround。所以像这样,在你试图查明的地方之前和之后是环视文本:

(?<=<add key="Directory" value=")[^"]*(?=" />)

根据自己的喜好进行调整,但这是基本思路。

编辑:

自从使用 jscript,尝试这样的事情(调整替换):

var re = /add key=\x22Directory\x22 value=\x22([^\x22]*)\x22/; 
var str = '<add key="Directory" value="" />'; //<- sample input. it could be your whole XML doc.
var subst = 'add key="Directory" value="Blue"'; 

var result = str.replace(re, subst);

或...

var re = /(add key=\x22Directory\x22 value=\x22)[^\x22]*(\x22)/; 
var str = '<root>\n    <someOtherElement/>\n    <add key="Directory" value="" />\n</root>';
var subst = 'Blue'; 

var result = str.replace(re, subst);