我一直试图想出一个合适的regrex来从字符串中删除'fries'这个词。但是,它并不是很成功。
理想情况下,regrex表达式应该能够删除“fries”这个词,无论是大写和/或小写,并且在下列情况下不应删除“fries”这个词。
frenchfries
friesislove
ilovefriesverymuch
这是我到目前为止所提出的
gsub('(?i)\\Wfries\\W','',string)
上面的一个主要缺陷是,如果正则表达式位于字符串的开头或结尾处,则无法检测到“fries”这个词。
例如。 “我爱炸薯条”,“炸薯条就是爱”
答案 0 :(得分:3)
TRE正则表达式引擎不支持内联修饰符,并且匹配您需要使用单词边界\b
的整个单词。
如果要使用内联不区分大小写的修饰符(?i)
,则可以使用PCRE正则表达式:
gsub('(?i)\\bfries\\b','',string, perl = TRUE)
或带有ignore.case =TRUE
参数的TRE正则表达式:
gsub('\\bfries\\b','',string, ignore.case =TRUE)
答案 1 :(得分:1)
你也可以试试这个:
gsub("\\<fries\\>",replacement = "",string ,ignore.case = TRUE)
\\<fries\\>
将确保只有确切的单词&#34; fries&#34;将被替换