0

我想从这段文本(html 标记)中提取值“64,111”。

     <tr>
     <th id="abc-xyz">Page <span class="sub">avg</span></th>
    <td headers="abc-xyz">
    10th Aug, 2011  </td>
  <td headers="abc-xyz">64,111</td>
     </tr>

我目前正在使用这个正则表达式-:

Match m2 = Regex.Match(text, @"\<td headers=""abc-xyz""\>(.*?)\</td\>", RegexOptions.IgnoreCase);

但是没有结果,请告诉我我做错了什么?

4

3 回答 3

0

转义双引号\

Match m2 = Regex.Match(text, "(?<=<td\sheaders=\"abc-xyz\">).*(?=</td>)", 
                       RegexOptions.IgnoreCase);
于 2012-10-15T00:25:37.357 回答
0

代替 ”。” 使用不包括停止字符的字符类。也就是说,而不是">(.*)<"你想要的">([^<]*)<".

我假设您知道这不能替代真正的解析,而正则表达式无法做到这一点,所以我不会宣扬这一点。在这个网站的某个地方已经有一个非常有趣的回应。

于 2012-10-15T00:26:35.967 回答
0

给猫剥皮的方法不止一种。
解析 XML 不限于正则表达式,因此这里是使用 Linq to XML 的一种方法。

string found = (from td in XElement.Parse(myxml).Elements("td")
                where td.HasAttributes
                let headers = td.Attribute("headers")
                where headers != null && headers.Value == "abc-xyz" && !td.HasElements
                select td.Value).FirstOrDefault();

Linq to XML 教程

于 2012-10-15T01:32:15.060 回答