gpt4 book ai didi

regex - 替换 HTML 文件中由开始和结束模式标记的多行。

转载 作者:行者123 更新时间:2023-12-03 07:29:58 25 4
gpt4 key购买 nike

我正在尝试进行自动构建并在其中使用 Perl 来更新文件中的某些路径。

具体来说,在一个html文件中,我想采用如下所示的 block

<!-- BEGIN: -->
<script src="js/a.js"></script>
<script src="js/b.js"></script>
<script src="js/c.js"></script>
<!-- END: -->

并将其替换为

<script src="js/all.js"></script>


我尝试了一些正则表达式,例如:

perl -i -pe  's/<--BEGIN:(.|\n|\r)*:END-->/stuff/g' file.html

或者只是开始:

perl -i -pe  's/BEGIN:(.|\n|\r)*/stuff/g' file.html

但我似乎无法通过第一行。有什么想法吗?

最佳答案

perl -i -pe 's/<--BEGIN:(.|\n|\r)*:END-->/stuff/g' file.html

这太接近了。

  • 现在只匹配 /s修饰符,这允许 .匹配任何字符,包括换行符。
  • 最重要的是,你想用<!--开始比赛, 请注意 ! .
  • 此外,您还需要像 .*? 这样的非贪婪匹配, 如果你有多个 END标记。
  • 您的示例输入显示可能有额外的空格。

这将导致以下替换:

s/<!--\s*BEGIN:.*?END:\s*-->/stuff/sg

作为@plusplus指出,-p遍历每一行。让我们将 Perl 的“行”概念更改为“一次整个文件”:

BEGIN { $/ = undef }

或使用 -0命令行开关,不带数字参数。

关于regex - 替换 HTML 文件中由开始和结束模式标记的多行。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17166916/

25 4 0
文章推荐: javascript - 如何在 .cmd 或 .bat 文件中运行 Node 实用程序
文章推荐: amazon-web-services - 如何在aws堆栈中添加多个ec2实例
文章推荐: javascript - 使用 createJS 获取对容器的缓存版本的引用
文章推荐: asp.net-mvc-3 - 您如何使用 DropdownList 助手正确创建 MultiSelect