用正则表达式去除 html,除了包含字符的标签 [重复]

Posted

技术标签:

【中文标题】用正则表达式去除 html,除了包含字符的标签 [重复]【英文标题】:Strip html with regex, except tags that contains a character [duplicate] 【发布时间】:2020-04-21 18:57:50 【问题描述】:

我有一个将电子邮件导入数据库的程序。为了使电子邮件在另一个程序中更具可读性,我必须将其剥离为 html。我正在使用此字符串扩展名来剥离 html。

public static string StripHtml(this string input)

   return Regex.Replace(input, "<.*?>", String.Empty);

问题是当我复制转发的邮件时,发件人的电子邮件写在标签内。

有没有办法使用正则表达式删除所有标签,除了包含@或电子邮件的标签?

这里的解决方案是一种可能的方式:Remove html tags except <br> or <br/> tags with javascript。但如果有办法只使用正则表达式,我更愿意这样做。

【问题讨论】:

试试这个&lt;[^@]*?&gt; 【参考方案1】:

您可以通过在原始正则表达式中添加额外条件来使用以下Regex 来满足您的要求:

<.[^@]*?>

工作演示:https://regex101.com/r/CNOvS7/1/

【讨论】:

【参考方案2】:

使用 [^@]* 代替 .* 这是一个除@之外的任何字符集。 ^ 代表“不”。例如,您也可以执行类似 [^0-9]* 的操作来排除所有数字。

【讨论】:

以上是关于用正则表达式去除 html,除了包含字符的标签 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

前端JS正则表达式去除html字符中所有的标签

正则表达式排除特定字符串

向各位正则高手请教:java 如何用正则 ,去除html标签之间的空格

java正则表达式去除html标签

正则表达式去除 HTML 标签

java正则表达式去除html标签保留指定标签