我应该如何编写一个正则表达式来删除字符串中的特定单词?

时间:2017-07-07 08:19:59

标签: r regex

我一直试图想出一个合适的regrex来从字符串中删除'fries'这个词。但是,它并不是很成功。

理想情况下,regrex表达式应该能够删除“fries”这个词,无论是大写和/或小写,并且在下列情况下不应删除“fries”这个词。

frenchfries
friesislove
ilovefriesverymuch

这是我到目前为止所提出的

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

上面的一个主要缺陷是,如果正则表达式位于字符串的开头或结尾处,则无法检测到“fries”这个词。

例如。 “我爱炸薯条”,“炸薯条就是爱”

2 个答案:

答案 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;将被替换