【问题标题】:How to modify links in multiple files with regex in Sublime Text 3如何在 Sublime Text 3 中使用正则表达式修改多个文件中的链接
【发布时间】:2019-06-24 22:34:13
【问题描述】:

我需要在 500 多个 HTML 文件中复制特定标签的 URL,其中 URL 是随机的,并将其放入另一个但保留所有代码的文件中。即复制href标签引号内的链接,并在另一个标签中重复。

例如我想改变这个:

href="PODCAST_32_LINK" 
url: 'RANDOM_PODCAST_LINK'

到:

href="PODCAST_32_LINK"
url: 'PODCAST_32_LINK'

我可以使用 Find 功能捕获带有正则表达式 [\S\s]*? 的链接,但我不确定我可以在 Replace 字段中输入什么。

我试过了:

Find: href="[\S\s]*?"
Replace: url:'$1'

但是,当然,这会破坏代码,将第一个替换为第二个。

【问题讨论】:

  • 如果这是一项需要多次完成的任务,我建议不要在编辑器中执行,而是编写一些代码来解析 HTML,然后使用简单的查找来识别特定的标签,修改它们然后写出更正的文件。即使只完成一次,也必须对 500 个文件执行此操作,这会让我编写代码。

标签: html regex sublimetext3


【解决方案1】:

你可以使用

查找内容:      (?s)(href="([^"]+)".*?url: ')[^']*
替换为$1$2

regex demo

详情

  • (?s) - . 现在匹配任何字符,包括换行字符
  • (href="([^"]+)".*?url: ') - 第 1 组:
    • href=" - 文字子串
    • ([^"]+) - 第 2 组:" 以外的 1+ 个字符
    • " - 一个 " 字符
    • .*? - 任何 0+ 个字符,尽可能少
    • url: ' - 文字子串。
  • [^']* - 除' 之外的0 个或多个字符。

替换是第 1 组(从 hrefurl: ')和 2(href 内容)中的值的串联。

【讨论】:

  • 完美!这就像一个魔术。您节省了我必须手动完成的数周工作。非常感谢 Wiktor Stribiżew。我很感激花在解释代码的每一个细节上的耐心和时间。祝您度过愉快的一周,一切顺利!
【解决方案2】:

根据你设计的表达方式,如果我理解了这个问题,你可能只是想要一个捕获组,

href="([\s\S]*?)"

并用url: '$1' 替换它,这可能会起作用。

Please see the demo here

其他可能适用于此处的表达式是:

href="([^"]+)"
href="([^"]+?)"
href="(.*)"
href="(.*?)"
href="(.+)"
href="(.+?)"

全部替换为:

url: '$1'

【讨论】:

  • 感谢您的帮助,艾玛。该代码有效。但是,它用第二个替换了第一个组,我需要维护两者的结构,只将第一个的链接复制到第二个。无论如何,感谢您的关注和回答。干杯!
猜你喜欢
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 2017-07-24
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多