[R]正規表現を使用して文字列を別の文字列に置換する
stringrパッケージのstr_replace_all関数を使う。元となる文字列にはベクトルを指定することができる。str_replaceという別の関数もあり、こちらは各文字列で最初にパターンにマッチした箇所しか置換をしない。
> library("stringr")
> s <- c("ABCD", "BCDE", "CDEF")
> str_replace_all(s, "B", "b")
[1] "AbCD" "bCDE" "CDEF"
> str_replace_all(s, "^B", "b")
[1] "ABCD" "bCDE" "CDEF"
> str_replace_all(s, "[E-F]$", "b")
[1] "ABCD" "BCDb" "CDEb"
> str_replace_all(s, "[E-F]", "b")
[1] "ABCD" "BCDb" "CDbb"
> str_replace(s, "[E-F]", "b")
[1] "ABCD" "BCDb" "CDbF"
ただ文字列を置換するのではなく、パターンに含まれる文字列を使用して置き換えたい場合は、キャプチャによるグループ化を利用する。パターン内で( )(括弧)に挟まれた範囲はグループ化(キャプチャという)される。このグループには、キャプチャされた順番に1から始まる連番が付けられ、置換後の文字列で\1, \2, …と挿入することで、置換後の文字列に挿入することができる(実際にはエスケープシーケンスを使用する必要があるので、\\1, \\2, …とする)。
以下は7桁の数字(○○○○○○○)を郵便番号の表記(○○○-○○○○)に置き換えた例。
> s <- c("1234567", "9876543", "3210")
> str_replace_all(s, "([0-9]{3})([0-9]{4})", "\\1-\\2")
[1] "123-4567" "987-6543" "3210"
« [R]正規表現を使用して文字列を別の文字列に置換する | トップページ | [R]重回帰モデルにおけるt検定(「44の例題で学ぶ計量経済学」(オーム社)pp.185-188) »
「R(正規表現)」カテゴリの記事
- [R]パターンにマッチするか否かを論理値で返す(2024.12.25)
- [R]パターンにマッチするか否かを論理値で返す(2024.12.24)
- [R]正規表現を使用していずれかの文字列にマッチする文字列を抜き出す(2024.12.14)
- [R]正規表現を使用してファイル名を表す文字列から拡張子を抜き出す(2024.02.04)
- [R]正規表現を使用してファイル名を表す文字列から拡張子を消す(2024.01.23)
« [R]正規表現を使用して文字列を別の文字列に置換する | トップページ | [R]重回帰モデルにおけるt検定(「44の例題で学ぶ計量経済学」(オーム社)pp.185-188) »
コメント