質問: 丁目番を正規表現で拾って置き換え(aa) Debug.Print bb End Sub ''結果↓ 'ほげ町-2018 ``` ### 試したこと 正規表現の定義?でカッコでくくる位置を変えてみたりしました。 「丁目」を‐に直接置換する方法も考えましたが、 あとあと~番~号みたいな住所の置換もあるだろうことを踏まえて できれば正規表現でクリアしたく考えております。 根本的に正規表現に関する理解の浅いところであり大変恐縮ですが、 よろしくお願いいたします。
回答: 補足。 SubMatchesは、正規表現パターンに一致した文字列のうち、括弧で囲ったかたまりごとに一致したものが入ります。 ``` [一二三四五六七八九十〇]+(丁目) ``` であれば、括弧は1つ、丁目しか囲われていないので、サブマッチは1つ、「丁目」のみ。 ここで、正規表現パターンを2つの括弧に変更して、メッセージボックスに何が出るかを試してみてください。 ``` ([一二三四五六七八九十〇]+)(丁目) ``` 前半の番地と、丁目の2つが表示されるはずです。 で、Replace処理の「置換先の文字」に「$1」や「$2」を入れると、それはサブマッチの1番目、2番目の文字に置き換わります。上記の例だと、番地の数字部分が「$1」、丁目が「$2」になります。 otnさんのサンプルコードでは、括弧を番地の部分だけにして「$1」には番地の数字が入るようにし、そこは残したまま残りの部分をハイフンに置換しているのですね。