- ベストアンサー
VBAで改行の入ったデータの正規表現について
- VBAで複数行のデータの一部を抜き出す際、改行がついてしまう問題について解決方法を教えてください。
- 質問者はVBAで複数行のデータの一部を抜き出そうとしていますが、抜き出したデータの先頭に改行がついてしまう状況です。
- 正規表現を使用してデータを抜き出す際に、改行を無視する方法が知りたいです。
- みんなの回答 (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 みたいなことをなさりたいのでは?
その他の回答 (1)
- Gotthold
- ベストアンサー率47% (396/832)
> re.Pattern = "start((.|\n)*?)end" ここでstartの後の改行をかっこの外に出しておくべきなのでは? re.Pattern = "start\n((.|\n)*?)end"
お礼
ありがとうございます。 今回、質問に書いたプログラムと、実際のプログラムは少し違います。 プログラムの一部を、簡略化しています。 実際は、正規表現でマッチしたのを、分割してコレクションに入れています。 その分割したデータを、再分割するところのプログラムが、今回質問したところです。 そこでは、なぜか正規表現がうまくマッチしません。 >re.Pattern = "start\n((.|\n)*?)end" これも試してみましたが、startの文字を入れるとマッチしなくなります。 どうも、コレクションの挙動がおかしいので、その辺から見直してみます。 ありがとうございました。
お礼
ありがとうございます。 すっかり、「¥r」の存在を忘れていました。 たぶん、これでスッキリ解決だと思います。 今からテストしてみます。