Notepad ++ regex在一行中查找空格字符的第N个实例

问题描述 投票:0回答:2

我想在一行上只匹配第n个(比如说第5个)空白字符,然后用换行符替换那个空格(这样我的所有行基本上都不超过4个字/ 4个空格)。在Notepad ++中的REPLACE行,我认为\ r \ n通常可以做到这一点,而且只是FIND模式给我带来了问题。

我知道有一个相对简单的正则表达式解决方案,我正在消隐,但在我的搜索“查找线上的模式的第N个实例”类型的正则表达式答案,最接近我想要的正则表达式也匹配一切在第5行空格之前。这是代码太多了。

^(?:\S+\s){5}

我知道“\ S +”可能不应该存在,但我尝试将此代码配对到下面的一些基本变体

^(\s){5}

都以某种方式失败了。

所以这是正则表达式的文本结果应该是什么。

从:

This line is too long. I want to shorten it.

This line is too long. I would really like to know why my regex is not working.

至:

This line is too long. 

I want to shorten it.

This line is too long.

I would really like to

know why my regex is

not working.
regex notepad++
2个回答
1
投票

在find中使用以下正则表达式:

((?:\S+\s){4}\S+)\s

Demo

然后用\1\r\n替换它。

这基本上捕获了第5个空间的所有内容,然后将其替换为第一个捕获组(\1),然后是\r\n


0
投票

如果你没有保留现有的换行符,那么一个简单的解决方案是做两个单独的替换,如下所示:

首先,用单个空格搜索\s+和Replace All。

然后做这个替换:

找什么:

(\S+ \S+ \S+ \S+ \S+)\s

做一个“全部替换”:

$1\r\n
© www.soinside.com 2019 - 2024. All rights reserved.