- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正規表現)
正規表現で文字列のマッチングを行う際に、なぜ一部の箇所しかマッチしないのか?
このQ&Aのポイント
- C++のプログラムで正規表現を使用して文字列のマッチングを行っています。しかし、特定のパターンに対して、期待通りにマッチングが行われないことがあります。
- プログラムでは、指定したパターンにマッチする部分の開始位置と終了位置を表示することで、マッチングが正しく行われているかどうかを確認しています。しかし、一部の箇所しかマッチしないことがあり、その原因がわかりません。
- プログラムのコードを確認したところ、`regcomp`関数でパターンをコンパイルし、`regexec`関数でマッチングを行っています。しかし、どこが問題なのか理解できません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
pmatchに設定されるものを勘違いしてるとこ。 pmatchには検索対象文字列から正規表現にマッチする部分を探し出せるだけ 探して、それを格納するところではないです。 最初にマッチした部分の開始位置・終了位置と グループ指定のマッチした部分の開始位置・終了位置が入ります。 正規表現は"cd"でグループ指定はありませんので pmatchには全体分の1つで正しいです。 "cd"を"(cd)","(c)d","c(d)"など変えてみればわかるかと思います。
お礼
理解ができました。ありがとうございます。