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

Replacing stuff of HTML using regex

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

我认为 notepad++ 非常适合这样的东西。打开 Find/Replace,然后在对话框的“搜索模式”部分选中正则表达式框。

在 "Find what" 字段中,试试这个:

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

并在 "Replace with" 中:

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

此处的 </code> 将取 <code>class= 和结束标记的尖括号 > 之间的任何内容(由 (.*) 找到),并将其替换为自身,这实际上会导致忽略 class 名称,而不必指定。第二个 (.*) 捕获段落标记内的当前内容,这就是您要替换的内容。所以我在 "Replace with" 块中写 [content] 的地方,就是您放置新内容的地方。这确实限制了您可以粘贴到记事本++ find/replace 对话框中的内容,但我认为它有一个相当大的限制。

如果我没记错文本字段的限制,您可以做的另一件事是调整我的 "Replace with" 文本,用一些换行符替换旧文本:

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

这将删除旧文本并在原来的位置留下一条清晰的线,这样可以轻松地将您想要的任何内容粘贴到普通编辑器窗格中。

如果您的新内容适合“替换为”字段,第一种方法可能更好,因为此正则表达式每行工作一次。您可以单击 "Replace" 几次,如果有效,单击 "Replace all" 将遍历文件中的每个 <p> 元素。

注意:此解决方案假定您的 <p> 标签在您键入问题描述时在一行内打开和关闭。如果它们换行,您将要在“替换”对话框中启用 . matches newline,并且...您需要比 (.*) 更棘手(更精确)的语法来捕捉您的 class 名称和 content-to-be-replaced。如果是这种情况,请告诉我,我会 fiddle 看看是否可以提供更多帮助。 (.*) 需要更改为 (.*?) 或其他内容;搜索需要变得更加贪婪,因为如果 . matches newline,那么 .* 会无限次匹配所有可能的字符,即整个文档。