日期:2014-05-17  浏览次数:20411 次

[正则表达式]高分求助, 如何书写(包含匹配)的正则表达式
[正则表达式]高分求助, 如何书写(包含匹配)的正则表达式

搜了半天, 也没找出国所以然来

源串:
<table>
  <tr><td>aaaaa</td></tr>
  <tr><td>aabcb</td></tr>
  <tr><td>bbbb</td></tr>
</table>

目标:
我要匹配, 包含abc的<tr>到</tr> 之间的内容, 正则咋写, 拾到半天搞不定(也就是说,我要匹配第二个tr之间的内容含<tr>)


------解决方案--------------------
(?i)<tr>.*?abc.*?</tr>
------解决方案--------------------
C# code

void Main()
{
 
string hcontent2=@"<table>
  <tr><td>aaaaa</td></tr>
  <tr><td>aabcb</td></tr>
  <tr><td>bbbb</td></tr>
</table>";
foreach(Match m in Regex.Matches(hcontent2, @"(?i)<tr>.*?abc.*?</tr>"))
    {
    Console.WriteLine(m.Value); 
    }
    /* 
    <tr><td>aabcb</td></tr
    */
}

------解决方案--------------------
目标为什么是:
<tr>
Tar_Candle
</tr>
------解决方案--------------------
C# code

void Main()
{
    string hcontent2=@"<table>
<tr>
12343
<tr>
<tr>
3454afsadf35
<tr>
</table>
<table>
<tr>
<table>
<tr>
Tar_Candle
</tr>
</table>
</tr>
<tr>
Tar_Abc
</tr>
<tr>
aaa
</tr>
</table>
<table>
<tr>
adaf
</tr>
<tr>
xys
</tr>
</table>";
foreach(Match m in Regex.Matches(hcontent2, @"(?is)<tr>((?!</?tr>).)*?Candle((?!</tr>).)*?</?tr>"))
    {
    Console.WriteLine(m.Value); 
    }
    /* 
    <tr>
    Tar_Candle
    </tr>
    */

}