【问题标题】:Notepad++ regex to find Nth instance of a space character on a lineNotepad ++正则表达式在一行上查找第N个空格字符实例
【发布时间】:2017-12-20 06:15:35
【问题描述】:

我只想匹配一行中的第 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++


    【解决方案1】:

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

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

    Demo

    然后将其替换为\1\r\n

    这实际上捕获了直到第 5 个空格的所有内容,然后将其替换为第一个捕获组 (\1),然后是 \r\n

    【讨论】:

      【解决方案2】:

      如果您可以不保留现有的换行符,那么一个简单的解决方案是执行两个单独的替换,如下所示:

      首先,搜索\s+ 并将全部替换为一个空格。

      然后做这个替换:

      找到什么:

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

      执行“全部替换”:

      $1\r\n
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多