2010-07-21 73 views
0

我有这个模式我用替换字符串:使用正则表达式替换字符串

var html = "some test string"; 
var regex = new Regex(@"<(.|\n)+?>", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline); 
var result = regex.Replace(html, ?); 

此模式匹配所有的HTML标签<anything here>?取代。根据匹配类型,实际上?" """。例如,如果我用下面的HTML标记:

<a href="www.google.com">Google</a><a href="www.yahoo.com">Yahoo!</a> 

结果是一样的东西如下:

Google?Yahoo! (here ? should be " ") 

,如果我用下面的HTML标记:

Buy it now for <b>$279</b><b>.99</b>! 

结果是一样的东西如下:

Buy it now for ?$279??.99?! (and here ? should be "") 

c有人帮助改善这种模式,以正常工作?在此先感谢

UPDATE

OK,其实我没有找到一个方法来做到这一点,我需要,所以我用MatchEvaluator检测在哪里?应该是“”和在哪里“”!感谢很多的;)

+1

所以,你需要空间在某些情况下,其他人没有空间。定义这些情况下,如果可能的话,你已经解决了你的问题。 – Kobi 2010-07-21 10:29:54

+0

好吧,但我不能通过使用RegEx条件语句来做到这一点? – Sadegh 2010-07-21 10:44:19

回答

3

试试这个你正则表达式:

Regex r = new Regex(@"<(.|\n)*?>", RegexOptions.IgnoreCase | RegexOptions.Singleline); 

,并检查您的选择,没有必要单线和多相结合。

+0

但是如果在HTML上存在任何断行,则没有任何匹配 – Sadegh 2010-07-21 10:43:27

+0

它不应该是它的RegexOptions.SingleLine,它会改变这种方式。行为方式。 试一试没有任何选项,它真的有用,因为我从我们使用的实时代码中复制表达式。 – 2010-07-21 10:53:54

+0

哦,我很抱歉,工作的;) – Sadegh 2010-07-21 10:56:46