次の電子メールのベクトルについて考えてみます。
emails <- c("[email protected];[email protected];[email protected]",
"[email protected];[email protected];[email protected]",
"[email protected]")
上記のベクトルの各要素は、ユーザーの電子メールアドレスのセミコロンで区切られた文字列です。この場合、例えば、最初のユーザは、三電子メールを持っている:[email protected]
、[email protected]
、および[email protected]
。
興味のある特定のドメイン名がありますmy.blah.com
。たとえば、です。また、この問題に関する私のドメイン知識を考えると、各ユーザーが持つことができるmy.blah.com
電子メールアドレスは1つだけであるという事実も知っています。このメールアドレスをユーザーごとに文字ベクトルとして返送NA
し、my.blah.com
メールアドレスが存在しない場合は返送したいと思います。
したがって、出力は次のようになります。
c("[email protected]", "[email protected]", NA)
これに対する私の最善の試みは
emails <- c("[email protected];[email protected];[email protected]",
"[email protected];[email protected];[email protected]",
"[email protected]")
regmatches(emails,
regexec("+.*@my.blah.com",
emails))
[[1]]
[1] "[email protected]"
[[2]]
[1] "[email protected];[email protected]"
[[3]]
character(0)
これは文字ベクトルではありませんが、この時点で正規表現を正しく取得するのに苦労しています。これに焦点を当てたいと思います。
私たちは、上の文字列を分割することができ";"
、その後、使用grep
してpattern
で終わる"my.blah.com"
と戻りvalue
、それらのマッチングのため。
sapply(strsplit(emails, ";"), grep, pattern = "@my\\.blah\\.com$", value = TRUE)
#[[1]]
#[1] "[email protected]"
#[[2]]
#[1] "[email protected]"
#[[3]]
#character(0)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加