NotePad++ 正则表达式删除带有 space 和某些字母的单词

NotePad++ regex remove words with space and certain letters

我正在尝试删除带有 "com" 并以“.”结尾的单词。我想删除整个单词并保留“。”

这是起始文本的示例:

This is a test testcom.

我希望输出为:

This is a test .

到目前为止我想出的是:

(?<=\ ).*?com(?=\.)

但这似乎突出了第一个 space 的完整句子。

(?<=\ ).*?com(?=\.) 模式匹配 space 之后的位置,然后匹配除换行符之外的任何 0 个或多个字符,但尽可能少,直到第一次出现 com ] 后跟一个点。因此,它将匹配从 space 之后的匹配位置到 com. 子字符串的任何数量的 space。

如果 com 可以出现在单词 中的任何位置,您可以使用以下两个表达式之一:

[^\s.]*com[^\s.]*\.
\w*com\w*\.

并替换为 ..

或者,等效的:

[^\s.]*com[^\s.]*(?=\.)
\w*com\w*(?=\.)

并替换为空字符串。

如果com必须在单词的末尾,只需从上面的表达式中删除第二个[^\s.]* / \w* .

详情

  • [^\s.]*com[^\s.]*\. - 匹配除 whitespace 和 . 以外的 0+ 个字符,然后匹配 com 然后再匹配除 whitespace 以外的 0+ 个字符..
  • \w*com\w*\. - 匹配 0+ letters/digits/_,然后匹配 com,然后再次匹配 0+ letters/digits/_,然后..

Notepad++ 演示和设置:

我相信这一款会适合你:

\w*?com(?=\.)