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