说我有以下单行代码:
<script src="common/scripts/vendor.0.js"></script><script src="common/scripts/all.0.js"></script><script src="common/scripts/environment.0.js"></script><script src="vendor/angular-mocks/angular-mocks.js"></script><script src="common/scripts/another.0.js">
我基本上想要匹配并替换以下字符串:
<script src="vendor/angular-mocks/angular-mocks.js"></script>
要匹配的关键模式是它是指向<script>
文件的angular-mocks.js
标记,将来可以更改路径。但替换必须是整个<script>
标记。
此外,所有文件中的0
实际上都包含Jenkins的内部版本号,以防您知道。
任何人都可以用正则表达式帮我做这个吗?
答案 0 :(得分:2)
<script[^>]+?angular-mocks\.js"><\/script>
与Qeole的回答非常相似,但实现不可知;你可能需要额外的逃避。如果你正在使用JS,PCRE或PY,这里有regex101的链接。
<强> 修改 强>
如果src
不能保证是代码中的最后一个属性,请使用:
<script[^>]+?angular-mocks\.js"[^>]*><\/script>
答案 1 :(得分:0)
使用sed
命令,您可以使用:
sed 's=<script [^>]*angular-mocks.js"></script>=='
<<< '<script src="common/scripts/vendor.0.js"></script><script src="common/scripts/all.0.js"></script><script src="common/scripts/environment.0.js"></script><script src="vendor/angular-mocks/angular-mocks.js"></script><script src="common/scripts/another.0.js">'
(匹配<script
,然后是不包含任何>
的字符串,然后是angular-mocks.js></script>
并删除整个内容。)