搜索文件目录以查找匹配的字符串,当找到时将指定的文本追加到末尾

时间:2018-06-14 20:23:38

标签: html regex powershell

我目前有成千上万的.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”,如here所述。但实际上,我认为它应该说正则表达式不应该用于解析HTML,因为在这种情况下,不能使用强大的单词并且不是真实的。

如果您有关于如何在没有正则表达式的情况下获得相同结果的建议,我很乐意尝试其他替代方案。我是在结果之后,并没有关闭建议的方法。

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

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

1 个答案:

答案 0 :(得分:1)

这是一种方法......

  1. 打开支持regex Find&amp; amp;替换多个文件。我将使用免费Visual Studio Code执行以下步骤:

  2. 文件&gt;打开... 并选择包含所有文件的根文件夹(如果它们被隐藏在子文件夹中,那很好)。

  3. 修改&gt;替换文件,然后点击使用正则表达式切换(其上带有.*的图标)。

  4. 将其插入“查找”框:.*

  5. 将其插入替换框:src="images/banner\.jpg"(.*?)>

  6. 预览更改并点击全部替换,如果您已准备就绪!

  7. 希望这有帮助。