如何在 Regex 中删除 only (anyword).com?

How to delete only (anyword).com in Regex?

我要匹配以下

My best email gmail.com
email com
email.com

成为

My best email
email com
*nothing*

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

\ .*(com) 

输入相同

My

但是此代码不适用于没有像第三个示例那样的 space 的实例,并且如果该行具有“.com”,则删除该行第一个 space 之后的所有内容"

使用以下解决方案:

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+ 个非白色 space 字符后跟文字 .com 后跟单词边界。

trimws 函数将 trim 所有结果字符串(例如,使用 "smail.com text here",当 space 将在 smail.com 删除后保留) .

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