
vbaで複数行のデータの一部を抜き出そうと思っています。
下記のようにすると、抜き出したデータの先頭に改行がついてしまいます。
何かいい方法はないでしょうか。
data = "start" & vbCrLf & "ABC" & vbCrLf & "DEF" & vbCrLf & "GHI" & vbCrLf & "end"
Set re = New RegExp
re.Pattern = "start((.|\n)*?)end"
re.MultiLine = True
Set mc = re.Execute(data)
For i = 0 To mc.Count - 1
MsgBox m.SubMatches(0)
Next i
上記を実行すると
vbCrLf & "ABC" & vbCrLf & "DEF" & vbCrLf & "GHI" & vbCrLf
となってしまいます。
”ABC”から抜き出す場合、正規表現をどう書けばいいのでしょうか。
よろしくお願いします。
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
みたいなことをなさりたいのでは?
ありがとうございます。
すっかり、「¥r」の存在を忘れていました。
たぶん、これでスッキリ解決だと思います。
今からテストしてみます。
No.1
- 回答日時:
> re.Pattern = "start((.|\n)*?)end"
ここでstartの後の改行をかっこの外に出しておくべきなのでは?
re.Pattern = "start\n((.|\n)*?)end"
ありがとうございます。
今回、質問に書いたプログラムと、実際のプログラムは少し違います。
プログラムの一部を、簡略化しています。
実際は、正規表現でマッチしたのを、分割してコレクションに入れています。
その分割したデータを、再分割するところのプログラムが、今回質問したところです。
そこでは、なぜか正規表現がうまくマッチしません。
>re.Pattern = "start\n((.|\n)*?)end"
これも試してみましたが、startの文字を入れるとマッチしなくなります。
どうも、コレクションの挙動がおかしいので、その辺から見直してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
【関数】【マクロ】売上X円以上...
-
エクセルシートの見出しの文字...
-
【マクロ 画像あり】Exact関数...
-
空白処理を空白に
-
同じ名前(重複)かつ 日本 ア...
-
excel
-
if関数の複数条件について
-
エクセルでフィルターした値を...
-
空白のはずがSUBTOTAL関数でカ...
-
【マクロ】エラー【#DIV/0!】が...
-
【マクロ】数式を入力したい。...
-
【関数】3つのセルの中で最新...
-
Excelで4択問題を作成したい
-
エクセルの文字数列関数と競馬...
-
オートフィルターの絞込みをし...
-
表計算ソフトでの様式の呼称
-
【画像あり】【関数】指定した...
-
エクセルに写真が貼れない(フ...
-
【関数】=EXACT(a1,b1) a1とb1...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAユーザーホームテキストボッ...
-
VBAで改行の入ったデータの正規...
-
9月30日はSEX CHANCE
-
テキストファイルから読み込ん...
-
縦横比率のを変えずに画像のサ...
-
upc 7915と mc7915ctは互換性有...
-
外部SWFファイルを再生バーでコ...
-
2つの取り込んだ画像を交差さ...
-
看護師です。体温表のマクロを...
-
FLASHでスロットゲームを作りた...
-
ActionScript - 複数の空ムービ...
-
変数に256文字以上のテキストを...
-
VB6.0で、フォームから、別のフ...
-
四乗根を英語で言うと・・・
-
photoshopで書いた四角の枠の中...
-
python ボタンを押すと複数の関...
-
テキストボックスの中身をリセ...
-
【VB.NET】別Formのボタンが押...
-
マウス自体の移動量の取得
-
UWSCのBTN関数について。
おすすめ情報