2016-03-10 103 views
0

我想匹配的含量研究之间的< /强> .... <强>在以下匹配html标签

“\ n <强>地址:< /强> <BR> \ nHennessy公园酒店,65%,埃本数码城市,埃本\ n <BR> \ <强>电话:< /强>(230)403 7200 <BR> \ n \ n <强>传真:< /强>(230)403 7201 <BR> \ n <强>联系人:< /强> < A HREF = “/ contact.html” >发送电子邮件< /一个> <BR> \ n \ n <p> \ n”个

有没有办法做到这一点。目前我正在使用

Match result = Regex.Match(box.InnerHtml, @"<\/strong>(.*?)<strong>", RegexOptions.ECMAScript); 

但我没有得到我想要的内容。

+3

相关:http://stackoverflow.com/a/1732454/770270 – tnw

回答

3

这将允许您选择的内容包括跨多行标签。

<strong>(.|\n)*?<\/strong> 

这将允许您选择标签之间的内容:

<strong>([\s\S]*?)<\/strong> 

这将允许您选择年底标签和之间的内容开始标签:

<\/strong>([\s\S]*?)<strong> 

我希望这有助于!

+0

这会将每个单独的字符单独分组,并且您将不能轻松访问结果。为了使这个解决方案起作用,你需要使用'([\ s \ S] *?)'而不是强标签之间的当前内容。 – Pluto

+0

冥王星,你是绝对正确的。我会更新我的帖子。 – jdaval

-1

我误解了你最后回答的问题。我相信你正在寻找的正则表达式是<\/strong>(.*?).*<strong>这将返回匹配的</strong> <br>\nHennessy Park Hotel, 65, Ebene Cybercity, Ebene \n<br>\<strong>Phone:</strong> (230) 403 7200<br>\n\n<strong>Fax:</strong> (230) 403 7201<br>\n<strong>

+1

我不认为他想匹配“地址:”,“电话:”等。他想匹配实际的数据值。 – Pluto

+0

我相信你是对的@Pluto。我编辑了答案。 –

0

要用C#做到这一点,您可以将您的电话更改为添加RegexOptions.Singleline。由于RegexOptions class具有[FlagsAttribute],因此可以将多个标志与按位或运算符组合(|)。

你新的呼叫看起来像这样(滚动结束):

Match result = Regex.Match(box.InnerHtml, @"<\/strong>(.*?)<strong>", RegexOptions.ECMAScript | RegexOptions.Singleline); 

请参阅本文的使用标志的完整描述:https://msdn.microsoft.com/en-us/library/yd1hzczs%28v=vs.110%29.aspx