资料见前一贴
比如有 <table ></a></td></tr></table>
用正则表达式匹配获得<a href="www.csdn.net" title="CSDN"></a>

如果你网页当中的格式是固定的
<table  > 
<tr>
<td><a href="www.csdn.net" title="CSDN"></a></td  >
</tr>
</table>
这样就可以实现
(?<=<table (.*?>)\n*<tr>\n*<td>)(?:.|\n)*?(?=</td>\n*</tr>\n*</table>)

注意实际使用时其中的转义字符。

可以这样拼接一个正则表达式:
string start = @"<table(.*?>)\n*<tr>\n*<td>";
string end = @"</td>\n*</tr>\n*</Table>";
string regExp = @"(?<=" + start + ")" + "(?:.|\n)*?" + "(?=" + end + ")";
string result = System.Text.RegularExpressions.Regex.Match(@"<table id= runat=server><tr><td>symbolsnhame</td></tr></Table>", regExp).Value;
MessageBox.Show(result);


总结出一个通用匹配表达式
string regExp = "(? <=" + "开头标志" + ")" + "(?:. |\n)*?" + "(?=" + "结束标志" + ")";

我们再为其扩展一下,因为有时<tr ><td>都会有这种标签<td class="NavLeftCell">当我们遇上这种问题时将不能匹配到想要的字符串,不过我们只需要进行一些简单的扩展就可以实现匹配.

string start = @"<table(.*?>)\n*<tr(.*?>)[\n]*<td(.*?>)";
string end = @"</td>\n*</tr>\n*</Table>";



技术资料:
反向预搜索:"(?<=xxxxx)","(?<!xxxxx)"

    这两种格式的概念和正向预搜索是类似的,反向预搜索要求的条件是:所在缝隙的 "左侧",两种格式分别要求必须能够匹配和必须不能够匹配指定表达式,而不是去判断右侧。与 "正向预搜索" 一样的是:它们都是对所在缝隙的一种附加条件,本身都不匹配任何字符。

    举例5:表达式 "

    举例1:表达式 "






相关文章:

  • 2022-12-23
  • 2021-12-24
  • 2022-12-23
  • 2021-07-17
  • 2022-02-22
  • 2021-07-07
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-26
  • 2021-09-19
  • 2022-01-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案