0

タグの内容全体から先頭または末尾の空白を除いたものに一致する正規表現を作成しようとしています。入力の要約例を次に示します。

<tag> テキスト </tag>

以下のみを一致させたい(一致の前後の空白がどのようにトリミングされているかに注意してください)。

"文章"

私は現在、.NET(Powershell)でこの正規表現を使用しようとしています:

(?<=<tag>(\s)*).*?(?=(\s)*</tag>)

ただし、この正規表現は、「テキスト」とタグ内の先頭の空白に一致します。これは望ましくありません。正規表現を修正して期待どおりに機能させるにはどうすればよいですか?

4

4 に答える 4

4

html の解析に regext を使用しないでください

代わりにパーサーを使用してください。

また 、本文タグ属性を削除するための正規表現 (C#)

また、正規表現は、XHTML の自己完結型タグを除く開始タグに一致します

それでも納得できない場合は、表現の途中でドットを使用しないでください。英数字エスケープを使用します。あなたのドットは空白を消費しています。代わりに \w (と思います) を使用してください。

于 2010-09-29T01:46:24.187 に答える
1

ルックアラウンドをドロップします。必要以上に仕事を複雑にするだけです。代わりに、キャプチャ グループを使用して必要な部分を選択します。

<tag>\s*(.*?)\s*</tag>

ご希望のパーツをそのままご用意しており$matches[1]ます。

于 2010-09-29T04:43:40.157 に答える
0
        test = "<tag>     test    </tag>";
        string pattern3 = @"<tag>(.*?)</tag>";
        Console.WriteLine("{0}", Regex.Match(test,pattern3).Groups[1].Value.Trim());
于 2010-09-29T02:14:47.553 に答える
0

これらの正規表現を使用して、末尾および先頭の空白を取り除きます。/^\s+//\s+$/

于 2010-09-29T01:50:13.337 に答える