elisp で正規表現にマッチした部分の抽出
ruby で言うと
url = "https://www.google.co.jp/" $1 if url =~ /https:\/\/(.*)\// #=> "www.google.co.jp"
みたいなことをしたい。
elisp だと以下のように書く。
(setq url "https://www.google.co.jp/") (string-match "https:\\/\\/\\(.*\\)\\/" url) (match-string 1 url) #=> "www.google.co.jp"
- string-match
- match-string
- 第一引数にマッチした箇所、第二引数に文字列
- 最後にマッチを行った部分の抽出を行う。
例の中の match-string の引数「1」は $1 と同じ意味。
() でくくったグループが複数あるなら、順に 2, 3, ... となっていく。0 はマッチした自分自身を返す。
まとめ
- 名前似ててややこしい
- ruby で言うと...
- string-match ≒ String#match (まんまや!)
- match-string ≒ String#=~