gpt4 book ai didi

regex - 使用 GREP/Regex 将 url 中的下划线替换为给定的 url 扩展

转载 作者:行者123 更新时间:2023-12-02 00:56:12 25 4
gpt4 key购买 nike

我使用 BBEdit。 BBEdit 支持多文件搜索和 GREP 替换。使用这个(从 stackoverflow 处的 Notepad++ 帖子复制):

(\bhref="|(?!^)\G)[^"<_]*\K_

我可以获得包含下划线的所有 URL 的列表。这个想法是用破折号替换所有下划线。没问题,BBEdit 搜索面板有一个“替换为”字段(如 Notepad++)。

一切都很好,但是我实际上不想处理所有 URL。例如,文件下载 URL 应保持原样,尤其是带有 .exe、.zip、.sit 和 .dmg 扩展名的 URL。实际上,我要处理的网址是 .php 和 .html 网址。

我的意思是应该在这里找到这种类型的 URL:

<a href="software/internet-tools/ftp-disk_sheet_us.php">

但不是这个:

<a href="software/internet-tools/ftp-disk_us_setup.exe">

到目前为止,我尝试编辑上面的 REGEX 但没有成功,因为我必须处理 600 个文件中的大约 30,000 个 url,所以我真的很想确保我没有做错任何事。

非常感谢您帮助我解决这个问题。

最佳答案

只有当链接以 .html 结尾时,您才可以强制匹配/.htm.php :

(?:\G(?!^)|\bhref="(?=[^"]*\.(?:html?|php)"))[^"<_]*\K_
^^^^^^^^^^^^^^^^^^^^^^^^^

参见 regex demo

(?=[^"]*\.(?:html?|php)")正面前瞻将需要除 " 以外的任何 0+ 个字符然后是 .其次是 htm/htmlphphref=" 之后立即, 否则,将找不到匹配项。

详情

  • (?:\G(?!^)|\bhref="(?=[^"]*\.(?:html?|php)")) - 上一场比赛结束 ( \G(?!^) ) 或 ( | )
    • \bhref=" - 一个完整的词href其次是 ="
    • (?=[^"]*\.(?:html?|php)") - 一个积极的前瞻,需要以下模式序列立即匹配到当前位置的右侧:
      • [^"]* - 除 " 以外的 0+ 个字符
      • \. - 一个点
      • (?:html?|php) - 匹配 htm 的非捕获组然后是可选的 lphp
      • " - 双引号
  • [^"<_]* - 除 " 以外的任何 0+ 个字符, <_
  • \K - 丢弃到目前为止匹配的所有文本的匹配重置运算符
  • _ - 下划线。

关于regex - 使用 GREP/Regex 将 url 中的下划线替换为给定的 url 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54036233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com