質問

私は、タグの内容全体に一致する正規表現を書き込もうとしています。これが入力の沸騰した例です。

<tag> 文章 </tag>

私は次のもののみを一致させたいです(試合の前後の白人がどのようにトリミングされたかに注意してください):

"文章"

私は現在、.NET(PowerShell)でこのREGEXを使用しようとしています。

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

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

役に立ちましたか?

解決

LookAroundsをドロップします。彼らは、仕事を必要以上に複雑にします。代わりに、キャプチャグループを使用して、必要な部品を選択します。

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

あなたが望む部分は利用可能です $matches[1].

他のヒント

regextを使用してHTMLを解析しないでください.

代わりにパーサーを使用します。

また:ボディタグ属性を削除するための正規表現(c#)

また: XHTMLの自己完結型タグを除くRegexは、オープンタグを一致させます

それがあなたを説得しないなら、あなたの表現の途中でドットを使用しないでください。英数字エスケープを使用します。あなたのドットは白人を消費しています。代わりに w(私は思う)を使用します。

これらの正規表現を使用して、トレーリングと主要な白人を剥ぎ取ります。 /^\s+//\s+$/

        test = "<tag>     test    </tag>";
        string pattern3 = @"<tag>(.*?)</tag>";
        Console.WriteLine("{0}", Regex.Match(test,pattern3).Groups[1].Value.Trim());
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top