正则表达式:匹配并删除指定单词前后 2 个单词

正则表达式:匹配并删除指定单词前后 2 个单词

以下是这一行:

I love you and George loves IOANA but also Mihai is my enemy.

我想匹配 IOANA 之前的两个单词,以及 IOANA 之后的两个单词

输出应该是:

I love you and IOANA Mihai is my enemy.

我相信我的正则表达式必须稍微升级一下才能起作用:

搜索:(^.*)(?s)(\w+{2}IOANA\w+{2})(.*)

替换为:\1\2

答案1

  • Ctrl+H
  • 找什么:(?:\S+ ){2}(IOANA)(?: \S+){2}
  • 用。。。来代替:$1
  • 查看 相符
  • 查看 环绕
  • 查看 正则表达式
  • 取消选中 . matches newline
  • Replace all

解释:

(?:         # non capture group
    \S+         # 1 or more non space character
                # a space
){2}        # end group, must appear twice
(IOANA)     # group 1
(?:         # non capture group
                # a space
    \S+         # 1 or more non space character
){2}        # end group, must appear twice

我猜,在这里,你的意思是单词是由非空格字符组成的。

  • 如果对于您来说,单词仅包含字母和数字,请使用[a-zA-Z0-9]+而不是\S+
  • 如果对于您来说,单词仅包含字母和一些标点符号,如',则使用[a-zA-Z']+而不是\S+

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

相关内容