从以特定单词开头的行中删除所有空格

时间:2016-09-16 07:01:44

标签: regex notepad++

在Notepadd ++中使用Regex find / replace如果行以'CHAPTER'开头,如何从行中删除所有空格?

示例文字:

CHAPTER A B C
Once upon a time.

我最终希望得到什么:

CHAPTERABC
Once upon a time.

错误的代码类似于:

(?<=CHAPTER)( )(?<=\r\n)

所以'CHAPTER'需要留下来,搜索应该停在第一个换行符。

1 个答案:

答案 0 :(得分:2)

您可以使用基于\G的正则表达式仅匹配以CHAPTER开头的行,然后仅匹配连续的非空格和空格块直到换行符,同时省略匹配的非空白块并只删除水平空格:

(?:^CHAPTER|(?!^)\G)\S*\K\h+

<强>详情:

  • (?:^CHAPTER|(?!^)\G) - CHAPTER在行的开头(^CHAPTER)或(|)上一次成功匹配的结束((?!^)\G,如\G也可以匹配一行的开头,我们使用重新排列的负面预测。)
  • \S* - 零个或多个非空白符号
  • \K - 强制正则表达式引擎的匹配重置运算符省略了到目前为止匹配的文本(因此,我们不会删除CHAPTER或任何非空白块)
  • \h+ - 仅水平空格(仅限1次或更多次)

enter image description here