首页 > 解决方案 > 在文件目录中搜索匹配字符串,找到时将指定文本附加到末尾

问题描述

我目前有数千个 .html 和 .htm 文件,它们在页面顶部都有一致的横幅。某些属性可能位于标签内的不同位置,但它们都以 img src= 开头。我想在所有这些文件中找到包含在 img 标记中的横幅,找到关闭'>',然后在其后直接附加另一个图像。

所以我想
<img src="images/banner.jpg".*>$在它之后立即查找并附加,
<img src="images/new-banner.jpg>这样它看起来像

<img src="images/banner.jpg width="x" height="x"> <img src="images/new-banner.jpg">

我知道,“正则表达式不能用于解析 HTML”,如此所述。但实际上,我认为应该说不应该使用正则表达式来解析 HTML,因为 can't 是一个强大的词,在这种情况下并不真实。

如果您建议我如何在不使用正则表达式的情况下获得相同的结果,我很乐意尝试其他替代方案。我追求结果,我不会拒绝建议的到达那里的方法。

我目前拥有的是这个,
Select-String -Pattern '<img src="images/banner.jpg".*>$' *.htm -AllMatches | % { $_.Matches } | % { $_.Value }
这让我走到了一半。它完整​​地返回找到的匹配项,但是,我不确定如何继续,以便我可以在结束后立即附加我想要的字符串>

谢谢大家的时间和想法:)。

标签: htmlregexpowershell

解决方案


这是一种方法...

  1. 打开您选择的支持跨多个文件的正则表达式查找和替换的 IDE。我将使用免费的Visual Studio Code执行以下步骤:

  2. File > Open...并选择包含所有文件的根文件夹(如果它们隐藏在子文件夹中,那很好)。

  3. 编辑 > 在文件中替换,然后单击使用正则表达式切换(上面的图标.*)。

  4. 将其插入“查找”框中:src="images/banner\.jpg"(.*?)>

  5. 将其插入替换框中:src="images/banner.jpg"$1>\n<img src="images/new-banner.jpg">

  6. 预览更改,如果您准备好了,请单击全部替换!

希望这可以帮助。


推荐阅读