需要使用正则表达式从以下url中移除标签<a href="http://example.com">Name</a>
才能输出字符串"Name"
。我正在使用C#.net。需要正则表达式才能从字符串中移除<a href="xx">Name</a>标签
任何帮助表示赞赏
需要使用正则表达式从以下url中移除标签<a href="http://example.com">Name</a>
才能输出字符串"Name"
。我正在使用C#.net。需要正则表达式才能从字符串中移除<a href="xx">Name</a>标签
任何帮助表示赞赏
你可以尝试使用这一个。它尚未在所有条件下进行测试,但它会从您的示例中返回正确的值。
\<[^\>]+\>(.[^\<]+)</[^\>]+\>
这是一个仅适用于标签的版本。
\<a\s[^\>]+\>(.[^\<]+)</a\>
我测试了它在以下HTML和它返回名称和价值只。
<a href="http://xx.com">Name</a><label>This is a label</label> <a href="http://xx.com">Value</a>
我有其他HTML因此我需要代码才能删除链接(a)标签。输出的html是由我创建的,因此发生破坏html的机会不会发生。 – 2011-04-26 17:00:54
您应该查看Html Agility Pack。 RegEx适用于几乎所有情况,但对于一些基础知识或破碎的Html而言,它失败了。由于HTML的语法不规则,所以Html Agility包在所有情况下仍然完美无缺。
如果您正在寻找这种特殊情况下的锚标签,任何以上的RegEx都可以为您工作,但Html Agility Pack是您长期运行的可靠解决方案,可以去除任何Html标签。
与Priyank同意在使用的解析器是一个更安全的赌注。如果你确实使用正则表达式的路线,考虑你想如何处理边缘情况。很容易转换你在你的问题中提到的简单情况。如果这确实是标记的唯一形式,那么一个简单的正则表达式就可以处理它。但是,如果标记是,例如,用户生成或来自第三方来源,请考虑如下情况:
<a>foo</a> --> foo # a bare anchor tag, with no attributes
# the regexes listed above wouldn't handle this
<a href="blah"><b>boldness</b></a> --> <b>boldness</b>
# stripping out only the anchor tag
<A onClick="javascript:alert('foo')">Upper\ncase</A> --> Upper\ncase
# and obviously the regex should be case insensitive and
# apply to the entire string, not just one line at a time.
<a href="javascript:alert('<b>boom</b>')"><b>bold</b>bar</a> --> <b>bold</b>bar
# cases such as this tend to break a lot of regexes,
# if the markup in question is user generated, you're leaving
# yourself open to the risk of XSS
以下是我的工作。
Regex.Replace(inputvalue, "\<[\/]*a[^\>]*\>", "")
我计算了9个以a开头的HTML标记,并且可能有一百万个和一个其他方法,这将在任意输入时失败。 – 2013-06-25 03:09:11
这适用于我的需求,只需从单个静态HTML文档中剥离标签即可。很明显,它在一些边缘情况下失败了,但不确定这足以保证倒票。 – 2014-11-02 18:08:24
[强制性?](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – 2011-04-26 15:21:52