2017-07-07 9 views
0

私は文字列から単語「フライドポテト」を削除するのに適切なレグレックスを思いついています。しかし、それはあまり成功していません。文字列から特定の単語を削除する正規表現を作成するにはどうすればよいですか?

理想的には、regrex式は大文字か小文字かにかかわらず「フライ」という単語を削除できなければならず、以下の場合には「フライ」という単語を削除しないでください。

frenchfries 
friesislove 
ilovefriesverymuch 

この

は私がこれまでに思い付いたものです

gsub('(?i)\\Wfries\\W','',string) 

上記の一つの大きな欠陥は、正規表現式が、それはどちらかのかどう単語「フライドポテト」を検出することができないということです文字列の開始または終了。

例えば、 'I love fries'、 'Fries is love'

答えて

3

TRE正規表現エンジンはインライン修飾子をサポートしていないため、単語全体を一致させるためには単語境界を使用する必要があります\b

gsub('(?i)\\bfries\\b','',string, perl = TRUE) 

またはignore.case =TRUE引数でTRE正規表現:

gsub('\\bfries\\b','',string, ignore.case =TRUE) 
1

ます。また、これを試すことができますが、インライン大文字小文字を区別しない修飾子(?i)を使用したい場合は

あなたはPCRE正規表現を使用することがあります。

gsub("\\<fries\\>",replacement = "",string ,ignore.case = TRUE) 

\\<fries\\>正確な単語 "フライドポテト"のみが置換されることを意味します。

関連する問題