【问题标题】:Search / and replace it with ; in xml tag with sublime text 3搜索 / 并将其替换为 ;在带有崇高文本的 xml 标记中 3
【发布时间】:2019-05-28 08:09:49
【问题描述】:

我正在处理一个带有这个标签的 .xml 文件

<Categories><![CDATA[Test/Test1-Test2-Test3|Test4/Test5-Test6|Test7/Test8]]></Categories>

我正在尝试通过在 Sublime Text 3 中使用正则表达式将 / 替换为 ;

输出应该是

<Categories><![CDATA[Test;Test1-Test2-Test3|Test4;Test5-Test6|Test7;Test8]]></Categories>

当我使用 (<Categories>\S+)\/(.+</Categories>) 时,它匹配所有行,当然,如果我使用 \/,它匹配 .xml 文件中所有位置的所有 /

你能帮忙吗?

【问题讨论】:

    标签: regex sublimetext3 pcre


    【解决方案1】:

    对于您的示例字符串,您可以使用\G 来断言上一次匹配结束时的位置,并使用\K 忘记已经匹配的内容,然后匹配正斜杠。

    在替换中使用;

    使用积极的前瞻来断言右边的内容是]]></Categories>

    (?:<Categories><!\[CDATA\[|\G(?!^))[^/]*\K/(?=[^][]*]]></Categories>)
    

    说明

    • (?:非捕获组
      • &lt;Categories&gt;&lt;!\[CDATA\[匹配&lt;Categories&gt;&lt;![CDATA[
      • |或者
      • \G(?!^)在上一场比赛结束时断言位置,而不是在开始时
    • )关闭非捕获组
    • [^/]* 匹配 0+ 次而不是 / 使用否定字符类
    • \K/ 忘记匹配的内容,然后匹配 /
    • (?= 正向前瞻,断言右边是
      • [^][]*]]&gt;&lt;/Categories&gt; 匹配 0+ 次而不是 [],然后匹配 ]]&gt;&lt;/Categories&gt;
    • )关闭正向预测

    Regex demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-07
      • 2021-06-18
      • 2014-05-15
      • 2013-04-21
      • 2016-11-24
      • 1970-01-01
      • 2016-01-12
      • 2015-12-19
      相关资源
      最近更新 更多