• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで改行の入ったデータの正規表現について)

VBAで改行の入ったデータの正規表現について

このQ&Aのポイント
  • VBAで複数行のデータの一部を抜き出す際、改行がついてしまう問題について解決方法を教えてください。
  • 質問者はVBAで複数行のデータの一部を抜き出そうとしていますが、抜き出したデータの先頭に改行がついてしまう状況です。
  • 正規表現を使用してデータを抜き出す際に、改行を無視する方法が知りたいです。

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんにちは。 vbCrLfを表すパターンは、  \r\n です。 Sub Re8780307() Dim re As VBScript_RegExp_55.RegExp Dim mc As VBScript_RegExp_55.MatchCollection Dim m As VBScript_RegExp_55.Match Dim Data   Data = "start" & vbCrLf & "ABC" & vbCrLf & "DEF" & vbCrLf & "GHI" & vbCrLf & "end" & vbCrLf & _     "start" & vbCrLf & "JKL" & vbCrLf & "MNO" & vbCrLf & "PQR" & vbCrLf & "end"      Set re = New RegExp   re.Global = True   re.MultiLine = True   re.Pattern = "start(\r\n((.|\r\n)*?)\r\n)end"      Set mc = re.Execute(Data)   For Each m In mc     Debug.Print "■"; m.SubMatches(1); "■"   Next End Sub みたいなことをなさりたいのでは?

a-z_A-Z
質問者

お礼

ありがとうございます。 すっかり、「¥r」の存在を忘れていました。 たぶん、これでスッキリ解決だと思います。 今からテストしてみます。

その他の回答 (1)

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.1

> re.Pattern = "start((.|\n)*?)end" ここでstartの後の改行をかっこの外に出しておくべきなのでは? re.Pattern = "start\n((.|\n)*?)end"

a-z_A-Z
質問者

お礼

ありがとうございます。 今回、質問に書いたプログラムと、実際のプログラムは少し違います。 プログラムの一部を、簡略化しています。 実際は、正規表現でマッチしたのを、分割してコレクションに入れています。 その分割したデータを、再分割するところのプログラムが、今回質問したところです。 そこでは、なぜか正規表現がうまくマッチしません。 >re.Pattern = "start\n((.|\n)*?)end" これも試してみましたが、startの文字を入れるとマッチしなくなります。 どうも、コレクションの挙動がおかしいので、その辺から見直してみます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう