我在替换 Sumbilme Text 中多个 xml 标记中的正则表达式结果时遇到问题。
我的 xml 代码在不同的组中包含多个标签 <startDate>
,如下所示:
<group1>
<id>123</id>
<startDate>2011-11-11</startDate>
<city>New York</city>
.
.
</group1>
<group2>
<id>456</id>
<startDate>2013-10-01</startDate>
<classCode>123</classCode>
.
.
</group2>
<group1>
<id>789</id>
<startDate>2016-01-17</startDate>
<city>Washington</city>
.
.
</group1>
<group2>
<id>135</id>
<startDate>2013-12-22</startDate>
<classCode>234</classCode>
.
.
</group2>
我想将 <startDate>(...some date...)</startDate>
中的每个标签 <group2>
替换为 <startDate1>(...some date...)</startDate1>
括号中的文本(...某个日期...)不同。
我开始找到这个标签并使用了这个代码:
(?=.*<startDate>)(?=.*</startDate>
<classCode>)
而且它有效。 Sublime 找到了 <startDate>(...some date...)</startDate>
中的每个标签 <group2>
。
但我在替换已创建标签中的文本时遇到问题。
我尝试将此代码放入“替换”行:
(?=.*<startDate1>)(?=.*</startDate1>
<classCode>)
没有成功。
所以我找到了另一个选择。
在“查找”行中我输入:
(?=.*(<startDate)(>))(?=.*(</startDate)(>
<classCode>))
在“替换”行中:
$1 1 $2 $3 1 $4
但结果是:
.
.
</group1>
<group2>
<id>456</id>
<startDate 1 > </startDate 1 >
<classCode><startDate 1 > </startDate 1 >
<classCode><startDate 1 > </startDate 1 >
<classCode><startDate 1 > </startDate 1 >
<classCode><startDate 1 > </startDate 1 >
<classCode><startDate 1 > </startDate 1 >
<classCode><startDate 1 > </startDate 1 >
<classCode><startDate 1 > </startDate 1 >
<classCode><startDate 1 > </startDate 1 >
<classCode><startDate 1 > </startDate 1 >
<classCode><startDate 1 > </startDate 1 >
<classCode><startDate>2015-11-02</startDate>
<classCode>123</classCode>
所以我的目标标签没有改变,但添加了新标签......
我希望得到这样的结果:
<group1>
<id>123</id>
<startDate>2011-11-11</startDate>
<city>New York</city>
.
.
</group1>
<group2>
<id>456</id>
<startDate1>2013-10-01</startDate1>
<classCode>123</classCode>
.
.
</group2>
有什么方法可以不手动替换标签名称吗?
最佳答案
有这样的事吗?
<startDate>([\d-]+)<\/startDate>(?=\s*<classCode>)
替换为:
<startDate1>$1</startDate1>
测试一下 here
关于regex - Sublime Text xml替换正则表达式结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43279328/