Notepad ++使用通配符查找/替换?

时间:2018-01-25 09:59:22

标签: xml replace notepad++

我有一个巨大的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#脚本来做到这一点?

3 个答案:

答案 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>如果需要,您可以通过添加更多要匹配的子组来扩展它。

编辑:好像我太慢了;)