2017-05-09 9 views
1

A,BABに一致する正規表現を作成したいと考えています。ABは非常に複雑な正規表現です。正規表現に一致するA、B、AB

1つの解決策は、(A|A?B)または(AB?|B)を使用することですが、次に1つの表現を繰り返す必要があります。

A?B?は空の文字列と一致するため、機能しません。

ABのいずれも繰り返さずにこの正規表現を作成できますか?

答えて

1

はい、あなたは交代を使用する必要がありますが、PCREでは、あなたがサブルーチンコールをサブパターンを再帰ことがあります。

A(?<BGroup>B)?|(?&BGroup) 

regex demoを参照してください。

(?<BGroup>B)は、サブルーチン呼び出しという名前の(?&BGroup)で繰り返される名前付きキャプチャグループです。

Recursive patternsを参照してください。

0

変数にAとBを格納し、連結によってAとBのパターン (AB?| B)を作成します。これは、サブパターンAおよびBを文書化することができるので、可読性が向上するという利点があります。

関連する問題