_55
_で始まるものと、単語Roof
(大文字と小文字を区別する)が含まれているものを検索したいと思います。
OR
演算子しか使用できないように見えるため、これまでのところ成功していません。
_grepl("*^55|*Roof", dataset$longname)
_
最終的に、私は次のようなことを達成したいと思います。
_grepl("*^55&&*Roof", dataset$longname)
_
または
_grepl("*^55&*Roof", dataset$longname)
_
(明らかに、これらの作業はどちらも機能しません。これらは説明のみを目的としています。)
結果に、_55
_で始まり、単語Roof
が含まれているものをすべて表示したいと思います。
たとえば、これらの結果は両方ともgrepl()
関数によって取得されると思います。
_55 - Roof Structure
_
そして
_55-Wall to Roof
_
grepl()
で使用できるAND
演算子はありますか?
「a」と「b」の両方を持つ文字列を検索するには
grepl("a", x) & grepl("b", x)
または
grepl("a.*b|b.*a", x)
2つの部分の順序がわかっている場合は、最後のgrepl
の2つの半分のうちの1つを省略できます。たとえば、質問のクエリの場合、55で始まり、Roofを含む文字列を見つけるにはこれで十分です。
grepl("^55.*Roof", x)
@Psidomは削除されましたが、n個のAND句に拡張可能であったため、回答を再投稿しています。 @Psidomが彼の応答を元に戻す場合、私はこれを削除します(私は元に戻すことに投票しました)が、他の検索者にとって答えが重要であると感じています:
s <- c("55 - Roof Structure", "55-Wall to Roof", 'd 55 Roof')
grepl("(?=.*^55)^Roof", s, Perl = TRUE)
## [1] TRUE TRUE FALSE
## 2 AND clauses
grepl("^(?=.*^55)(?=.*Roof)(?=.*Wall)", s, Perl = TRUE)
## [1] FALSE TRUE FALSE