如何找到包含两个字符串的字符串并替换其中一个字符串

时间:2015-09-18 15:53:34

标签: regex

我有很多html文件,一个标签使用了错误的类,我需要替换它们。我可以找到我需要替换的所有标签,但我不确定如何正确地替换它们。

我有这样的事情:

<div id="myDiv" att1="blah" class="classToBeReplaced"> blah </div>

使用^(?=.*myDiv)(?=.*classToBeReplaced).*$

我能找到一切。我想替换为:

<div id="myDiv" att1="blah" class="newClass"> blah </div>

其中一些标签具有不同的属性,具体取决于它们所在的文件。 最好的方法是什么?

3 个答案:

答案 0 :(得分:1)

看后面不能有可变长度,因此更容易捕获目标左侧的整条线并将其全部放回后面参考:

Search: ^(<div id="myDiv".*?class=")classToBeReplaced(?="[^<]*</div>)
Replace: $1newClass

请注意,正则表达式的风格可能会使用反斜杠而不是$作为反向引用,即您可能需要\1newClass代替。

答案 1 :(得分:1)

在@Bohemian的帮助下,我实际上最终使用的是:

 (myDiv.*?)classToBeReplaced(.*?>) 

并替换为 $1newClass$2

我在每种情况下都有不同的属性,所以我需要考虑到这一点。

答案 2 :(得分:0)

如果我理解你的问题,你可以这样做:

class="classToBeReplaced"

使用替换字符串:

class="classYouWant"

<强> Working demo

另一方面,如果您只想更换div,可以使用:

(<div id="myDiv".*)"classToBeReplaced

使用替换字符串:

\1"classNEW"

<强> Working demo