1

正規表現を使用して、特別なテキストを含む HTML テーブル行を見つけたいです。

上記の表の最初のセルテキスト「合計」で、最初の行を置き換えたいと思います。

<table>
    <tr><td>Total</td><td>255</td></tr>
    <tr><td>XYz</td><td>441</td></tr>
</table>
4

3 に答える 3

1

あなたの質問に答えるために、これは一致し、その行を置き換えることができます.

(<tr><td>Total.*?</tr>)

ただし、可能であれば、HTMLAgilityPack (不正な形式の HTML を適切に処理します) や、厳密な XHTML マークアップ (まれ) を使用できる幸運な場合は、単純な XML パーサーなどを使用することをお勧めします。

于 2012-12-28T16:02:12.433 に答える
0

HTML 入力文字列が有効な HTML (整形式) であるか、そうでない場合、関数は失敗します:P

これを試して

    private static MatchCollection GetSpecialTables(string inputStr, string ftrName)
    {
        try
        {
            return Regex.Matches(inputStr, string.Format(@"<table>\s+<tr><td>{0}</td>.+?</table>", Regex.Escape(ftrName)), RegexOptions.Singleline);
        }
        catch (ArgumentException ex)
        {
            // Syntax error in the regular expression, handle it
            return null;
        }
    }
    // use it this way!
    static void Main()
    {

        var matches = GetSpecialTables(myHtml, "Total");
        foreach (Match match in matches)
        {
            // match.Value;
        }

    }
于 2012-12-28T16:17:59.797 に答える
0

残念ながら、HTML を正規表現だけで確実に照合することはできません。これは、HTML が正規表現を使用して解析可能な 通常の言語ではなく、文脈自由言語であるためです。

代わりに HTML パーサーの使用を検討してください。C# の場合、上記のコメントで mgnoonan が述べたように、 HTML Agility Packが適切な選択です。

于 2012-12-28T15:59:37.097 に答える