Notepad ++删除一个被句子包围的单词

时间:2017-11-08 15:55:16

标签: regex notepad++

句子: WOMACK ARMY HOSPITAL null 2817~Reilly ft Rd~28310

预期: WOMACK ARMY HOSPITAL null 2817~Reilly~28310

单词组由制表符分隔。

我需要删除包含2个字母或更少字母的波形符号(〜)之间的每个字。

我现在的正则表达式找不到它。

找到什么:〜[^] {1,2}〜

替换为:没有

这需要多线工作。

1 个答案:

答案 0 :(得分:1)

您可以使用

(?:\G(?!^)|~)[^~\n]*?\K[^\n\w]*\b\w{1,2}\b(?=[^~\n]*~)

替换为空字符串。请参阅regex demo online

请注意,我将\n添加到了否定的字符类中,以确保只在行内匹配(不会从一行溢出到另一行)。

<强>详情

  • (?:\G(?!^)|~) - 上一场比赛的结束或代字号
  • [^~\n]*? - 除了代字号和换行符之外的0 +字符,尽可能少
  • \K - 省略目前为止匹配的文字
  • [^\n\w]* - 除了word和换行符之外的0个字符,尽可能多
  • \b\w{1,2}\b - 1个或2个字符(将\w替换为\pL仅匹配字母)
  • (?=[^~\n]*~) - 除了代字号和换行符之外的0 +字符之后必须有一个代字号(以确保我们在同一行上有一个结束~)。

Notepad ++设置:

enter image description here