acプログラムに次のテキスト文字列と正規表現パターンがあります。
char text[] = " identification division. ";
char pattern[] = "^(.*)(identification *division)(.*)$";
regexec()ライブラリ関数を使用すると、次の結果が得られました。
文字列:識別部門。 パターン:^(。*)(識別*分割)(。*)$ 部分式の総数:3 OK、パターンが一致しました... 開始:0、終了:37、一致:識別部門。 部分式1開始:0、終了:8、一致: 部分式2開始:8、終了:35、一致:識別分割 部分式3開始:35、終了:37、一致:。
正規表現エンジンは貪欲に一致し、最初のキャプチャグループ(。*)は任意の数の文字(改行文字を除く)と一致するので、テキスト文字列の最後まで文字と一致しないのはなぜですか(最初の8つのスペースのみを一致させるのとは対照的に、「。」まで)?
各キャプチャグループを一致させる必要がありますか?
キャプチャグループがテキスト文字列と一致する方法に関する規則はありますか?
ありがとう。