我想在一行上只匹配第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.
在find中使用以下正则表达式:
((?:\S+\s){4}\S+)\s
然后用\1\r\n
替换它。
这基本上捕获了第5个空间的所有内容,然后将其替换为第一个捕获组(\1
),然后是\r\n
。
如果你没有保留现有的换行符,那么一个简单的解决方案是做两个单独的替换,如下所示:
首先,用单个空格搜索\s+
和Replace All。
然后做这个替换:
找什么:
(\S+ \S+ \S+ \S+ \S+)\s
做一个“全部替换”:
$1\r\n