我正在编辑几百个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的新手。
答案 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
,则.*
无限次匹配任何可能的角色,即整个文档。