我试图从html字符串中删除锚点标记之间的所有链接和文本,如下所示:
string LINK_TAG_PATTERN = "/<a\b[^>]*>(.*?)<\\/a>";
htmltext = Regex.Replace(htmltext, LINK_TAG_PATTERN, string.Empty);
这不起作用有人有想法吗?
非常感谢,
编辑:正则表达式来自此链接Extract text and links from HTML using Regular Expressions
答案 0 :(得分:4)
使用HTML Parser而非正则表达式来解析HTML。
答案 1 :(得分:3)
字符串中的问题:开头不必要的斜杠(即Perl语法),非转义反斜杠(\b
),不必要的反斜杠(\\
)。
因此,如果 成为正则表达式,考虑到其他人已经链接到的所有警告,请尝试
string LINK_TAG_PATTERN = @"<a\b[^>]*>(.*?)</a>";
htmltext = Regex.Replace(htmltext, LINK_TAG_PATTERN, string.Empty, RegexOptions.IgnoreCase);
\b
是必要的,以防止以a
开头的其他代码进行匹配。
答案 2 :(得分:2)
答案 3 :(得分:2)
string LINK_TAG_PATTERN = @"(<a\s+[^>]*>)(.*?)(</a>)";
htmltext = Regex.Replace(htmltext, LINK_TAG_PATTERN, "$1$3", RegexOptions.IgnoreCase);
答案 4 :(得分:0)
从概念上讲,这只会剥离一种非常特殊的链接(例如,你的正则表达式与大写字母A不匹配,它在HTML中完全有效:<A ...>bla</A>
。替换也不适用于javascript链接。是您的代码与用户安全性相关吗?