我正在使用带有此标记的.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文件中所有位置的所有/
。
能请你帮忙吗?
答案 0 :(得分:2)
对于示例字符串,您可以使用\G
在上一个匹配项的末尾声明位置,并使用\K
忘记已经匹配的内容,然后匹配一个正斜杠
在替换中,使用;
使用积极的前瞻断言右边的是]]></Categories>
(?:<Categories><!\[CDATA\[|\G(?!^))[^/]*\K/(?=[^][]*]]></Categories>)
说明
(?:
非捕获组
<Categories><!\[CDATA\[
匹配<Categories><![CDATA[
|
或\G(?!^)
在上一场比赛的末尾而不是在开始时断言位置)
关闭非捕获组[^/]*
使用否定的字符类匹配0次以上而不是/
\K/
忘记匹配的内容,然后匹配/
(?=
正向前进,断言右边是
[^][]*]]></Categories>
匹配0+次而不是[
或]
,然后匹配]]></Categories>
)
积极回望