regex - 搜索 / 并将其替换为 ; 在带有崇高文本的 xml 标记中 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 文件中的所有位置。
能否请你帮忙?
解决方案
对于您的示例字符串,您可以使用 a\G
来断言上一个匹配结束时的位置,并使用\K
忘记已经匹配的内容,然后匹配正斜杠。
在更换使用;
使用积极的前瞻来断言右边的内容是]]></Categories>
(?:<Categories><!\[CDATA\[|\G(?!^))[^/]*\K/(?=[^][]*]]></Categories>)
解释
(?:
非捕获组<Categories><!\[CDATA\[
匹配<Categories><![CDATA[
|
或者\G(?!^)
在上一场比赛结束时断言位置,而不是在开始时
)
关闭非捕获组[^/]*
/
不使用否定字符类匹配 0+ 次\K/
忘记匹配的内容,然后匹配/
(?=
正向前瞻,断言右边是[^][]*]]></Categories>
匹配 0+ 次 not[
or]
,然后匹配]]></Categories>
)
关闭正向前瞻
推荐阅读
- android - 在 Android 11 上,从客户端应用程序调用远程绑定服务绑定失败
- julia - 不同维度的向量化
- python - 查找通用元素 (Amazon SDE-1)
- javascript - Cordova Media-Capture 插件不工作
- c# - BenchmarkDotNet не показывает скорость работы с StreamReader
- node.js - Express-session 为每个请求创建新会话
- macos - 使用clang的OS X Lion上的__thread链接错误
- python - 熊猫如何根据排名和约束进行优先级排序
- android-studio - Android Studio Canary 在每次构建时下载 jetifier-core
- python-sphinx - readthedocs 没有正确生成索引页