2017-01-24 9 views
1

特定の単語をさまざまなフレーズで空白にする必要がありますが、単語がコンジュゲートされている、複数の、または所有している可能性があるため、最初の数文字のみを検索できます。例:Rの中でXで始まる単語全体のグレープ

example = "You are the elephant's friend." 
gsub("\\beleph.*\\b", " _____ " , example) 
[1] "You are the _____ " 

最初の数文字から単語全体をどのように一致させることができますか?

答えて

3
gsub("\\beleph[[:alpha:][:punct:]]+\\b", "_____" , example) 
[1] "You are the _____ friend." 

がこの例では機能します。

変更は貪欲な(そして時には危険な) "。*"アルファベットと句読点に一致する文字クラス "[[:alpha:] [:punct:]] +"文字。便利な既成の文字クラスについては、help(regex)を参照してください。文字列に数字も含まれている場合は[:alnum:]のようになります。


最初の単語との一致を検出するには、次のようにする必要があります。ここに例があります。また、あなたの元のコードの作業を行うには例

gsub("(\\b|^)eleph[[:alpha:][:punct:]]+\\b", "_____" , example) 
[1] "You are the _____ friend." 
+0

を試すことができますので、あなたは、INSEAD空白スペースを使用することができますが、' '' \\ b'''はすでに単語を終了するの世話をするんで、このソリューションの問題を引き起こしますスペースで? – Nancy

+0

私の投稿のヘルプファイルから: "記号\ bは、単語のどちらかの端にある空の文字列と一致します。"したがって、本質的に単語の最後の文字に一致し、単語を区切るスペースは含まれません。 – lmo

+0

私はこれがフレーズの最初の単語では機能しないことに気付きました。何故ですか? – Nancy

3

で動作します

exampleYoda = "elephant's friend you be." 

gsub("(\\b|^)eleph[[:alpha:][:punct:]]+\\b", "_____" , exampleYoda) 
[1] "_____ friend you be." 

は、あなただけの数量詞のungreedyをしなければなりません。

example = "You are the elephant's friend." 
gsub("\\beleph.*?\\b", " _____ " , example) 
[1] "You are the _____ 's friend." 

"が、あなたは

example = "You are the elephant's friend." 
gsub("\\seleph.*?\\s", " _____ " , example) 
[1] "You are the _____ friend." 
関連する問題