[R]特定の文字列で始まる(始まらない)文字列を抽出する
正規表現で^記号は文字列の先頭を表すため、これを正規表現パターンに利用する。invertオプション(デフォルト:FALSE)をTRUEにすると、指定した正規表現パターンに一致しない要素を返す。
> ss <- c("石見舞菜香", "鈴木みのり", "瀬戸麻沙美", "のぐちゆり", "和多田美咲")
> # 「の」で始まる氏名
> grep("^の", ss, value = TRUE)
[1] "のぐちゆり"
> # 「の」で始まらない氏名
> grep("^の", ss, invert = TRUE, value = TRUE)
[1] "石見舞菜香" "鈴木みのり" "瀬戸麻沙美" "和多田美咲"
> # 「の」を含むが「の」で始まらない氏名
> grep("^.+の", ss, value = TRUE)
[1] "鈴木みのり"
ルックアラウンド式(lookaround expression)を使うこともできるが、perlオプション(デフォルト:FALSE)をTRUEにする必要がある。
> grep("^(?=の)", ss, value = TRUE)
grep("^(?=の)", ss, value = TRUE) でエラー:
不正な正則表現です、理由は 'Invalid regexp'
> # 「の」で始まる氏名 ※肯定的な先読み
> grep("^(?=の)", ss, perl = TRUE, value = TRUE)
[1] "のぐちゆり"
> # 「の」で始まらない氏名 ※否定的な先読み
> grep("^(?!の)", ss, perl = TRUE, value = TRUE)
[1] "石見舞菜香" "鈴木みのり" "瀬戸麻沙美" "和多田美咲"
ルックアラウンド式については、以下のページの「Lookaround の概要」を参照のこと。
https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-language-quick-reference#lookarounds-at-a-glance
« [R]特定の文字列で終わる(終わらない)文字列を抽出する | トップページ | [R]ベクトルから条件に一致する要素を抽出する »
「R(正規表現)」カテゴリの記事
- [R]正規表現でIPv4によるIPアドレス表記の文字列かどうか判定する(2026.02.26)
- [R]文字列が指定の正規表現パターンとマッチするかどうか調べる(2025.12.23)
- [R]正規表現を使用して文字列型ベクトルから特定の文字列を含む要素を取り出す(2025.12.06)
- [R]特定の文字列で始まる(始まらない)文字列を抽出する(2025.11.09)
- [R]パターンにマッチするか否かを論理値で返す(2024.12.25)
« [R]特定の文字列で終わる(終わらない)文字列を抽出する | トップページ | [R]ベクトルから条件に一致する要素を抽出する »

コメント