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);
我正在搜索以下文本:
<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);