• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正規表現)

正規表現で文字列のマッチングを行う際に、なぜ一部の箇所しかマッチしないのか?

このQ&Aのポイント
  • C++のプログラムで正規表現を使用して文字列のマッチングを行っています。しかし、特定のパターンに対して、期待通りにマッチングが行われないことがあります。
  • プログラムでは、指定したパターンにマッチする部分の開始位置と終了位置を表示することで、マッチングが正しく行われているかどうかを確認しています。しかし、一部の箇所しかマッチしないことがあり、その原因がわかりません。
  • プログラムのコードを確認したところ、`regcomp`関数でパターンをコンパイルし、`regexec`関数でマッチングを行っています。しかし、どこが問題なのか理解できません。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.3

pmatchに設定されるものを勘違いしてるとこ。 pmatchには検索対象文字列から正規表現にマッチする部分を探し出せるだけ 探して、それを格納するところではないです。 最初にマッチした部分の開始位置・終了位置と グループ指定のマッチした部分の開始位置・終了位置が入ります。 正規表現は"cd"でグループ指定はありませんので pmatchには全体分の1つで正しいです。 "cd"を"(cd)","(c)d","c(d)"など変えてみればわかるかと思います。

sumire_kanou
質問者

お礼

理解ができました。ありがとうございます。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

||

sumire_kanou
質問者

お礼

ありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

少なくとも if (regcomp(&preg, (char*)pattern.c_str(), REG_EXTENDED||REG_NEWLINE)) return 1; は変.

sumire_kanou
質問者

補足

ご回答ありがとうございます。申し訳ございませんが、もう少し具体的にご教示頂けると幸いです。

関連するQ&A