查找/替换正则表达式以去除HTML标签

17
使用查找和替换,要删除类似以下内容的标签,应使用什么正则表达式:
``````
注意: ```
5个回答

20

这个方法适用于 Notepad++ 5.8.6 (UNICODE)

查找: <option value="\d+">(.*?)</option>

替换: $1

记得选择 "正则表达式" 和 ". 匹配换行符" enter image description here


12

我使用以下正则表达式进行了操作:

查找:<.*?>|</.*?>

并将其替换为:

替换为:\r\n (这是用于换行的)

使用此正则表达式(<.*?>|</.*?>),我们可以轻松地找到您的HTML标记之间的值,如下所示:

enter image description here

我进行了输入:

<otpion value="123">1</option><otpion value="1234">2</option><otpion value="1235">3</option><otpion value="1236">4</option><otpion value="1237">5</option> 

我需要在1、2、3、4、5等选项之间找到值。

输入图像描述

并得到以下输出:

输入图像描述


7

这对我来说完美地运作:

  • 在“查找”模式中选择“正则表达式”。
  • 在“查找内容”字段中输入[<].*?>,并将“替换为”字段留空。
  • 请注意,您需要拥有Notepad++的5.9版本才能使用?操作符。

如此发现: digoCOdigo - 在notepad++中去除html标签


2

如果您知道HTML的格式不会改变,那么这样的方法就可以使用:

<option value="(\d+)">(.+)</option>

嗯,这抹掉了整行,但看起来很接近。 - stewart715
我将执行两个查找和替换操作:一个是 <option value="(\d+)">,另一个是 </option>。效果非常好,谢谢。 - stewart715
如果您正在使用Notepad++的查找/替换功能,它将无法正常工作,因为正则表达式使用反向引用来捕获您想要保留的字段。对于查找/替换,请仅将数字之前的所有内容替换为空白,然后用分隔符(例如|但不是逗号,因为名称中可能有逗号)替换“>”,最后将</option>替换为空白。将结果导入Excel。 - Justin Morgan

1
String s = "<option value=\"863\">Viticulture and Enology</option>";
s.replaceAll ("(<option value=\"[0-9]+\">)([^<]+)</option>", "$2")
res1: java.lang.String = Viticulture and Enology

(已使用Scala测试,因此res1:)

使用sed时,您将使用稍微不同的语法:

echo '<option value="863">Viticulture and Enology</option>'|sed -re 's|(<option value="[0-9]+">)([^<]+)</option>|\2|'

对于记事本++,我不知道具体细节,但是"[0-9]+"应该表示“至少一个数字”,“[^<]”表示除了开头的小于号之外的任何字符,可以多次出现。掩码和反向引用可能会有所不同。

正则表达式存在问题,如果跨越多行或被注释隐藏,正则表达式将无法识别它。

然而,很多HTML以正则表达式友好的方式生成,总是适合一行,并且从未被注释掉。或者您在使用一次性代码时,可以在检查输入之前使用它。


这真的很有帮助,现在只要循环遍历它们全部 :D 谢谢! - stewart715

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接