正規表現のデバッグでは、代替案のどの代替案が実際に一致したかを調べる必要があります。たとえば、ターゲット文字列の場合:
"foo"
正規表現で:
"f.*|other"
上記の正規表現で、代替"f.*"
が実際に一致したことを知る方法が必要です。
多くの代替を含む複雑な正規表現では、これはデバッグにとって非常に困難です。
正規表現のデバッグでは、代替案のどの代替案が実際に一致したかを調べる必要があります。たとえば、ターゲット文字列の場合:
"foo"
正規表現で:
"f.*|other"
上記の正規表現で、代替"f.*"
が実際に一致したことを知る方法が必要です。
多くの代替を含む複雑な正規表現では、これはデバッグにとって非常に困難です。
各代替が独自のキャプチャ グループに含まれている場合、それらのグループの 1 つだけが一致に参加できることがわかります。それ以外は、クエリを実行すると null または未定義の値が返されます。したがって、null ではないグループが見つかるまで、キャプチャ グループを反復処理するだけです。詳細なプロセスは、使用している正規表現の種類やプログラミング言語によって異なります。非常に多くのバリエーションがあります。
したがって、正規表現が(f.*)|(other)
であり、一致するfoo
場合、グループ #1 は含まれfoo
、グループ #2 は null (またはnil
、使用している言語に応じて、またはundef
) になります。ただし、空の文字列は通常、一致しなかった成功した一致を示すことに注意してください。文字を消費しません)。
(?<MYRESULT>(?<RESULT1>f.*)|(?<RESULT2>other))
これで、MYRESULT と RESULT1 または RESULT2 の両方に一致が含まれます。