搜索 / 并将其替换为 ;在带有 sublime text 3 的 xml 标签中

Search / and replace it with ; in xml tag with sublime text 3

我正在处理带有此标签的 .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 文件中所有地方的所有 /

你能帮忙吗?

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

在替换中使用 ;

使用正面前瞻断言右边的是 ]]></Categories>

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

说明

  • (?:非捕获组
    • <Categories><!\[CDATA\[ 匹配 <Categories><![CDATA[
    • |
    • \G(?!^) 断言上一场比赛结束时的位置,而不是开始
  • )关闭非捕获组
  • [^/]* 匹配 0+ 次不 / 使用否定字符 class
  • \K/忘记匹配了什么,再匹配/
  • (?=正向前瞻,断言右边的是
    • [^][]*]]></Categories>匹配0+次不是[],然后匹配]]></Categories>
  • ) 关闭正面前瞻

Regex demo