Rで解析:正規表現をいくつか紹介


正規表現をいくつか紹介します。

windows11のR version 4.2.2で確認しています。

実行コマンドの紹介

詳細はRで「?regex」を実行してヘルプを確認してください。

#途中まで使用する文字データ
Test <- c("karada いいもの", "karadaいい もの",
          "karada_いいもの", "からだにいいもの",
          "からだに1いいもの", "からだに1223いもの",
          "からだに12234535いいもの", "からだに13234535いいもの",
          "からだに13234335いいもの", "0123-45-6789",
          "012-3456-7895", "0123456789")

#空白を含む文字列にマッチ
Test[grep("\\s", Test)]
[1] "karada いいもの" "karadaいい もの"

#数字3の前に数字が3連続にマッチ
Test[grep("\\d{3}?3", Test)]
[1] "からだに1223いもの" "からだに12234535いいもの" "からだに13234535いいもの" "からだに13234335いいもの"
[5] "0123-45-6789" "0123456789" 

#数字3が3回以上出現にマッチ
#Test[grep("(3.*){3}", Test)]
Test[grep("(3.*){3,}", Test)]
[1] "からだに13234535いいもの" "からだに13234335いいもの"

#数字3が2連続出現にマッチ
Test[grep("3{2}", Test)]
[1] "からだに13234335いいもの"

#ハイフンありの数字にマッチ
Test[grep("0\\d{1,4}-\\d{1,4}-\\d{4}", Test)]
[1] "0123-45-6789"  "012-3456-7895"

#「いい」を含む文字列がマッチ
Test[grep("\\wいい", Test)]
[1] "karadaいい もの" "karada_いいもの" "からだにいいもの" "からだに1いいもの"       
[5] "からだに12234535いいもの" "からだに13234535いいもの" "からだに13234335いいもの"

#「いい」を含まない文字列がマッチ
Test[grep("(*いい)", Test, invert = TRUE)]
[1] "からだに1223いもの" "0123-45-6789" "012-3456-7895" "0123456789"

#特殊文字(.など)をエスケープ:\\
grep("い\\.い", c("ii", "い.いい", "い. a", "いいい", "い9i", "い9i"))
[1] 2

#任意の一文字にマッチ:.
grep("い.い", c("ii", "い.いい", "い. a", "いいい", "い9i", "い9i"))
[1] 2 4

#ある文字から開始する文字にマッチ:^,.,*,$の組み合わせ
grep("^いい.*$", c("ii", "い.いい", "い. a", "いいい", "い9i", "い9i"))
[1] 4

#ある文字で終了する文字にマッチ:^,.,*,$の組み合わせ
grep("^.*いい$", c("ii", "い.いい", "い. a", "いいい", "い9i", "い9i"))
[1] 2 4

#英数字にマッチ:[A-Za-z0-9]
grep("[A-Za-z0-9]", c("ii", "い.いい", "い. a", "いいい", "い9i", "い9i"))
[1] 1 3 5 6

#数字にマッチ:[0-9]
grep("[0-9]", c("ii", "い.いい", "い. a", "いいい", "い9i", "い9i"))
[1] 6

#空白にマッチ:[[:space:]]
grep("[[:space:]]", c("ii", "い.いい", "い. a", "いいい", "い9i", "い9i"))
[1] 3

#ある拡張子を含む文字列にマッチ
grep("^.*doxc.*$", c("ii", "い.いい", "い.doxc", "いいい", "い9i", "い9i"))
[1] 3

#少数点を含む文字列にマッチ
grep("[+-]?\\d*\\.\\d", c("45454", "-8.0", "8.15452", "7.5", ".23", "い9i"))
[1] 2 3 4

#https/ftpを含む文字列にマッチ
grep("(https?|ftp)://([^:/]+)",
     c("45454", "-8.0", "https://www.karada-good.net/analyticsr/r-648/", "7.5", ".23", "https://www.karada-good.net/"))
[1] 3 6

少しでも、あなたの解析が楽になりますように!!

スポンサードリンク

スポンサードリンク