我正在搜索以下文字:
<add key="Directory" value="" />
这是我的正则表达式:
add key=\x22Directory\x22 value=\x22([^\x22]*)\x22
我想要的输出是:
<add key="Directory" value="blue" />
但是,凭借我所拥有的,它似乎正在选择整个标签并产生:
<blue />
但是,根据regex101,它不应该。我做错了什么?
我也尝试过:
value=\x22([^\x22]*)\x22
但是,返回:
<add key="Directory" blue />
Regex101告诉我以下内容。它匹配并注意到第一个捕获组,但仍然替换整个值=“”
答案 0 :(得分:1)
您想使用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 = '$1Blue$2';
var result = str.replace(re, subst);