【发布时间】:2021-12-18 04:07:17
【问题描述】:
我有一堆带有空格的 Markdown 链接,我需要用 %20 替换空格。到目前为止,我已经破解了一些解决方案,但没有一个可以在 VSCode 中工作,或者完全符合我的要求。
这是我需要的网址格式转换:
[My link](../../_resources/my resource.jpg)
[My link](../../_resources/my%20resource.jpg)
\s+(?=[^(\)]*\)) 将适用于括号内的任何空白 - 但会产生误报,因为它适用于任何带括号的内容。
(?:\]\(|(?!^)\G)[^]\s]*\K\h+ 完成了这项工作,但我在 VSCode 中收到了一些“无效的转义字符”消息,所以我认为该语言不兼容。
我一直在尝试识别字符 ]( 上的链接,但由于我对正则表达式比较陌生,所以有点挣扎。
我尝试使用此正则表达式:(?<=\]\()s\+,因为此(?<=\]\().+ 正确识别了网址,但它不起作用。
我哪里错了?提前致谢!
编辑:文件中的 VSCode 查找不支持可变长度后向查找,即使打开文件中的查找/替换确实支持这一点。在我开始编写脚本之前,请接受任何其他解决方案!
【问题讨论】:
-
您不能在 VSCode 中使用单个正则表达式传递来做到这一点,因此请使用具有 Boost 正则表达式引擎并提供在文件中查找/替换选项的 Notepad++。正则表达式为
(\G(?!\A)|\[[^][]*]\()([^()\s]*)\s+(?=[^()]*\))并替换为$1$2%20。