0

次の入力文字列があります

Testing <B><I>bold italic</I></B> text. 

および次の正規表現:

<([A-Z][A-Z0-9]*)\b[^>]*>.*</\1>

この正規表現は、次のより大きな一致のみを提供します

<B><I>bold italic</I></B>

より小さな一致を取得するために正規表現を使用する方法は?

<I>bold italic</I>

貪欲でない演算子を使用してみましたが、どちらも機能しませんでした。

また、Java や C# の一致グループや一致コレクションなどを使用して、両方を一致グループとして取得することは可能ですか?

4

2 に答える 2

1

正の後読みを使用する以下の正規表現を試してください。

(?<=>)<([A-Z][A-Z0-9]*)\b[^>]*>.*<\/\1>

デモ

>シンボルの直後から始まるタグを探します。

説明:

  • (?<=>)>ここでは正の後読みが使用され、シンボルの直後に一致するマーカーが設定されます。
  • <リテラル<記号。
  • ([A-Z][A-Z0-9]*\b[^>]*>)>次のシンボルまでキャプチャします。
  • .*\nゼロ回以上を除いて、nay 文字に一致します。
  • <\/\1>リートラル</+最初に捕獲されたグループ +と一致します>
于 2014-07-15T05:44:51.030 に答える