搜索/并替换为;在具有崇高文本3的xml标签中

时间:2019-05-28 08:09:49

标签: regex sublimetext3 pcre

我正在使用带有此标记的.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文件中所有位置的所有/

能请你帮忙吗?

1 个答案:

答案 0 :(得分:2)

对于示例字符串,您可以使用\G在上一个匹配项的末尾声明位置,并使用\K忘记已经匹配的内容,然后匹配一个正斜杠

在替换中,使用;

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

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

说明

  • (?:非捕获组
    • <Categories><!\[CDATA\[匹配<Categories><![CDATA[
    • |
    • \G(?!^)在上一场比赛的末尾而不是在开始时断言位置
  • )关闭非捕获组
  • [^/]*使用否定的字符类匹配0次以上而不是/
  • \K/忘记匹配的内容,然后匹配/
  • (?=正向前进,断言右边是
    • [^][]*]]></Categories>匹配0+次而不是[],然后匹配]]></Categories>
  • )积极回望

Regex demo