regex - 正则表达式替换方括号之间的字符,但不替换括号之间的字符
问题描述
我有一个 Markdown 链接列表,如下所示:
[filename-with-some-words](/001-folder/filename-with-some-words.md)
[title-with-other-words](/001-folder/title-with-other-words.md)
[other-words](/001-folder/other-words.md)
我想替换-
出现在方括号之间的[]
,而不是出现在括号之间的()
,这样我的最终结果将如下所示:
[filename with some words](/001-folder/filename-with-some-words.md)
[title with other words](/001-folder/title-with-other-words.md)
[other words](/001-folder/other-words.md)
我可以匹配括号之间的所有(?<=\[).+?(?=\])
文本,但我如何只匹配破折号-
?
解决方案
您可以使用
(?:\G(?!\A)|\[)[^][-]*\K-(?=[^][]*])
用空格代替。请参阅正则表达式演示。
细节
(?:\G(?!\A)|\[)
- 上一场成功比赛的结束或[
[^][-]*
]
- 除,[
和之外的任何 0+ 个字符-
\K
- 匹配重置运算符从整个匹配内存缓冲区中丢弃到目前为止匹配的所有文本-
- 一个连字符(?=[^][]*])
- 后面是 0+ 个非括号字符,直到一个]
字符。
推荐阅读
- amazon-web-services - 是否有任何 RDS 的 cloudwatch 警报指标来检查连接问题?
- apache-kafka - 如何迁移 Confluent 的 Apache Kafka Schema Registry < 5.2.0?
- mysql - 无法启动 mysql docker 容器
- flutter - Flutter 自己的推送通知(与存储无关)
- git - 如何将本地代码推送到 gitlab 上的新分支。需要具体步骤(看起来像一个重复的问题,但我需要一些具体步骤)
- swift - Swift NSToolbarItem 标签自定义字体
- influxdb-2 - 如何将标签中的字符串值与字段中的字符串值连接起来?
- directory - 后缀子目录名称及其下的文件数
- docker - 无法通过浏览器访问我在 k8s 中的节点(使用服务和部署)
- django - 根据Django中的某些条件获取单个查询中关联的多个模型