![在所有 URL 中用 - 替换 _ 的正则表达式](https://linux22.com/image/1628222/%E5%9C%A8%E6%89%80%E6%9C%89%20URL%20%E4%B8%AD%E7%94%A8%20-%20%E6%9B%BF%E6%8D%A2%20_%20%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.png)
我在 WordPress 页面中有很多 URL,它们_(下划线)像这样: https://wpg.meditationyoga.in/Peace_research_studies/ 并需要更换_和-(破折号)得到这个: https://wpg.meditationyoga.in/Peace-research-studies/
但必须使用正则表达式,仅在 URL 中进行替换,而不是在其他元素(例如 id=”attachment_1076″ 或 id=”grad_table”)中进行替换
我正在使用 Search Regex 插件。上述替换的正则表达式是什么?
答案1
我不是 100% 确定,但我认为通过观察插入它支持“PHP”,这意味着你可以尝试如下模式:
(?:https?\S+?(?=_)|\G(?!^))(?:[^ _]*)\K_
(?:
- 打开第一个非捕获组。https?
- 与可选的“s”逐字匹配“http”。\S+?
- 在惰性匹配中,任何非空白字符。(?=_)
- 对下划线进行正向预测。|
- 交替/或。\G(?!^)
- 在上一场比赛结束时断言位置,而不是在开始时。)
- 关闭第一个非捕获组。
(?:
- 打开第二个非捕获组。[^ _]*
- 匹配零个或多个除空格或下划线之外的字符。)
- 关闭第二个非捕获组。
\K_
- 重置匹配缓冲区并匹配下划线。
参见在线演示