2017-07-24 54 views
0

我想匹配以下如何在Regex中只删除(anyword).com?

My best email gmail.com 
email com 
email.com 

成为

My best email 
email com 
*nothing* 

具体来说,我使用正则表达式R,所以我知道有转义某些字符不同的规则。我很新的正则表达式,但到目前为止,我有

\ .*(com) 

这使得相同的输入

My 

但是这个代码不适合那里有像第三个例子没有空格情况下工作,并消除一切都会过去一个行的第一个空间,如果行有一个“.COM”

回答

5

采用如下方案:

x <- c("My best email gmail.com","email com", "email.com", "smail.com text here") 
trimws(gsub("\\S+\\.com\\b", "", x)) 
## => [1] "My best email" "email com"  ""    "text here" 

查看R演示。

\\S+\\.com\\b模式匹配1+非空白字符,后面跟着文字.com,后跟字边界。

trimws函数将修剪所有结果字符串(例如,使用"smail.com text here"时,如果在删除smail.com之后仍有空格)。

请注意,TRE正则表达式引擎不支持括号表达式中的简写字符类。