正規表現のコマンドをいくつか紹介します。
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
少しでも、あなたの解析が楽になりますように!!