我有一个巨大的xml文件,我需要找到并替换一些部分。总共发生了大约2100次,所以我希望通过使用Notepad ++中的高级工具来解决这个问题。 它不一定是记事本++,所以如果有另一个解决方案,我也有帮助。
查找事件如下所示:
<condition test="contains" flags="90">
<category>
<name internal="Type">Type</name>
</category>
<property>
<name internal="parameter">Code</name>
</property>
<value>
<data type="wstring">21.12</data>
</value>
</condition>
除了数据部分21.12
中的数字外,一切都是一致的
在所有2100个案例中,这个数字是不同的。
所以我想查找并替换,但是这个数字是在查找和替换中使用的某种通配符。 我必须找到的部分应该与正则表达式(Replace using RegEx in notepad++)一起工作。但是我无法粘贴正则表达式的部分。
简而言之,如果我的代码如下:
<code>6</code>
<code>7</code>
<code>8</code>
我想查找/替换它看起来像这样:
<code>6</code>
<extraCode>6</extraCode>
<code>7</code>
<extraCode>7</extraCode>
<code>8</code>
<extraCode>8</extraCode>
这是可能的,我需要一些其他软件,还是制作一些C#脚本来做到这一点?
答案 0 :(得分:3)
这直接回答了问题的第二部分。您可以尝试以下查找和替换:
<强>查找强>
<code>(\d+)</code>
<强>替换强>
<code>$1</code>\n<extraCode>$1</extraCode>
如果这不符合您的要求,那么您应该以不同的方式表达您的问题。
注意:如果<code>
标签的内容可能是除数字之外的内容,则匹配此模式:
<code>([^<]+)</code>
答案 1 :(得分:2)
<data type="wstring">(\d+(?:\.\d+)?)</data>
$0\n<extraCode>$1</extraCode>
<强>解释强>
( : start group 1
\d+ : 1 or more digits
(?: : start non capture group
\. : a dot
\d+ : 1 or more digits
)? : end group, optional
) : end group 1
<强>替换强>
$0 : the whole match
\n : a linebreak, you could use \r\n
$1 : content of group 1 (ie. the value)
给定示例的结果:
<condition test="contains" flags="90">
<category>
<name internal="Type">Type</name>
</category>
<property>
<name internal="parameter">Code</name>
</property>
<value>
<data type="wstring">21.12</data>
<extraCode>21.12</extraCode>
</value>
</condition>
答案 2 :(得分:1)
您可以使用$0\n<extraCode>$1<extraCode>
进行替换。因此,您需要找到这样的结果:<code>(\d+)<code>
如果需要,您可以通过添加更多要匹配的子组来扩展它。