前提・実現したいこと
番地等の区切りについてハイフンや丁目番地表記が混在している住所のテキストデータを、
ハイフン区切りに統一したいと考えております。
正規表現を使えば何とかなりそうということが分かったので調べながらやってみました。
正規表現に触れるのはこれが初めてです。
発生している問題・エラーメッセージ
例えば
"ほげ町三丁目2018"
というテキストを
"ほげ町三-2018"
と置き換えたいと思い、下記のコードを書いてみました。
しかし結果としては「ほげ町-2018」と三丁目が丸ごと消えてしまいました。
途中でmsgboxを出す時には「丁目」だけを拾えているようなので
それをReplaceメソッドで置換に使えばいいのかと思ったのですが、うまくいきません。
該当のソースコード
ExcelVBA
1 2Private Function 丁目番を正規表現で拾って置き換え(ByVal 文字列 As String) As String 3 4Dim re_choume As New RegExp 5Dim mc_choume As MatchCollection 6Dim m As Match 7Dim i As Long 8Dim tex As String 9Dim returntex As String 10 11tex = 文字列 12 13re_choume.Pattern = "[一二三四五六七八九十〇]+(丁目)" 14re_choume.Global = True 15Set mc_choume = re_choume.Execute(tex) 16 17For Each m In mc_choume 18 For i = 0 To m.SubMatches.Count - 1 19 MsgBox m.SubMatches(i)'ここでは「丁目」だけが表示される 20 Next 21Next m 22 23returntex = re_choume.Replace(tex, "-") 24丁目番を正規表現で拾って置き換え = returntex 25 26 27End Function 28 29 30'テスト用コード↓ 31Sub tesuto() 32Dim aa As String 33Dim bb As Variant 34 35aa = "ほげ町三丁目2018" 36bb = 丁目番を正規表現で拾って置き換え(aa) 37 38Debug.Print bb 39 40End Sub 41 42''結果↓ 43'ほげ町-2018 44
試したこと
正規表現の定義?でカッコでくくる位置を変えてみたりしました。
「丁目」を‐に直接置換する方法も考えましたが、
あとあと~番~号みたいな住所の置換もあるだろうことを踏まえて
できれば正規表現でクリアしたく考えております。
根本的に正規表現に関する理解の浅いところであり大変恐縮ですが、
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー