使用正则表达式替换HTML的内容

时间:2016-01-02 15:00:02

标签: html regex replace tags notepad++

我正在编辑几百个HTML文件,我必须手动更换所有内容,所以我想知道是否可以使用正则表达式完成。我不认为这是可能的,但它可能是,所以请帮帮我 好的,例如,我在文件中有许多<p>个标签,每个标签都有不同的类。例如:
<p class="class1">stuff here</p>
<p class="class2">more stuff here</p>
我想用某些东西替换“这里的东西”和“更多东西”,例如
<p class="class1">[content]</p>
<p class="class2">[content]</p>
我想知道这是否可行。
我正在使用记事本++ 附:我是regex的新手。

1 个答案:

答案 0 :(得分:1)

我认为notepad ++非常适合这样的东西。打开查找/替换,并检查对话框的搜索模式部分中的正则表达式框。

在&#34;找到什么&#34;字段,试试这个:

    \<p\ class\=(.*)\>(.*)\<\/p\>

和&#34;替换为&#34;:

    \<p\ class\=\1\>[content]\<\/p\>

此处的\1将采用(.*)和结束标记的尖括号class=之间的任何内容(由>找到),并将其替换为自身,本质上导致忽略类名,而不是必须指定。第二个(.*)捕获段落标记内的当前内容,这是您要替换的内容。所以,我在&#34;用&#34;替换中写了[content]。阻止你放置新内容的地方。这确实限制了您可以粘贴到记事本++查找/替换对话框中的内容,但我认为它有一个非常大的限制。

如果我不记得文字字段的限制不正确,那么你可以做的另一件事就是调整我的&#34;替换为&#34;文本只是用旧换行替换旧文本:

    \<p\ class\=\1\>\n\n\<\/p\>

这将删除旧文本,并在原来的位置留下一条清晰的线条,以便于将任何内容粘贴到普通编辑器窗格中。

第一种方式可能更好,如果您的新内容适合“替换为”字段,因为此正则表达式每行一次。您可以点击&#34;替换&#34;几次,如果它正在工作,请点击&#34;全部替换&#34;将遍历文件中的每个<p>元素。

注意:此解决方案假定您的<p>代码在一行内打开和关闭,因为您输入了问题说明。如果他们违反了行,您就会想要在“替换”对话框中启用. matches newline,并且......您需要比(.*)更复杂(更精确)的语法来捕获您的类名和内容-将被替代。如果是这种情况,请告诉我,我会弄清楚它,看看我能不能提供更多帮助。 (.*)需要更改为(.*?)或其他内容;搜索需要变得更加贪婪,因为如果. matches newline,则.*无限次匹配任何可能的角色,即整个文档。