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 を使用して行う 1 つの方法を次に示します。

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 から XML へのチュートリアル

于 2012-10-15T01:32:15.060 に答える