2016-04-30 13 views
2

正規表現を使用して文字列内の部分一致を取得する必要があります。唯一のプレーンな文字列のためのagreplが正規表現で動作しない

pattern <- "(^|)shower only($|)" 

stringInQuestion<-"Delta Vero 1-Handle Shower Only Faucet Trim Kit in Chrome" 

grepl(pattern,stringInQuestion, ignore.case=TRUE,perl=TRUE) 

[1] TRUE 

agrepl(pattern,stringInQuestion, ignore.case=TRUE,fixed = FALSE, max.distance=0.2) 

[1] FALSE 

作品:

agrepl("shower only",stringInQuestion, ignore.case=TRUE,fixed = FALSE, max.distance=0.2) 

誰かが起こっているかを把握するために私を助けてください、私は正確なものを得ることができますか?

+0

'max.distance'引数を調べます。たとえばに設定した場合10、それは動作します。 –

+0

パターンを['pattern < - " \\ bshower \\ b "'](http://ideone.com/PLUH4K)に変更してください。 「シャワーのみ」という言葉全体をチェックする必要があるので、単語境界を使用してください。 '0.2'はフレーズのエラーとのマッチングを許可します。たとえば、' Showerrrrr Only'は 'Showerrrrrr Only'と一致しません。 –

+0

ありがとう!出来た。 – Mathemilda

答えて

0

あなただけの単語全体の存在を確認していきますので、私は

pattern <- "\\bshower only\\b" 

max.distance引数の公式説明を参照してくださいにパターンを減らすことをお勧め:許可

max.distance
の最大距離をマッチのために。整数として、またはパターン長×最大変換cost(対応する画分より小さくない最小の整数に置き換えられます)、または可能な成分

付きリストの分数としてのいずれかで表さ0.2は、フレーズをエラー、たとえばShowerrrrr Onlyと一致させることができますが、Showerrrrrr Onlyと一致しません。 max.distanceはそれに応じて本当のあなたが持っている入力とasjustに対してテストする必要があることを

pattern <- "\\bshower only\\b" 
stringInQuestion<-"Delta Vero 1-Handle Shower Only Faucet Trim Kit in Chrome" 
grepl(pattern,stringInQuestion, ignore.case=TRUE,perl=TRUE) 
agrepl(pattern,stringInQuestion, ignore.case=TRUE,fixed = FALSE, max.distance=0.2) 
## [1] TRUE 
## [1] TRUE 

注:このworking demoを参照してください。

関連する問題