正则表达式替换一行一个重复模式

时间:2014-06-09 16:13:46

标签: javascript regex

说我有以下单行代码:

<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的内部版本号,以防您知道。

任何人都可以用正则表达式帮我做这个吗?

2 个答案:

答案 0 :(得分:2)

<script[^>]+?angular-mocks\.js"><\/script>

与Qeole的回答非常相似,但实现不可知;你可能需要额外的逃避。如果你正在使用JS,PCRE或PY,这里有regex101的链接。

<强> 修改

如果src不能保证是代码中的最后一个属性,请使用:

<script[^>]+?angular-mocks\.js"[^>]*><\/script>

regex101

答案 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>并删除整个内容。)