【问题标题】:Notepad++ insert new line at every nth occurrence of a string/characterNotepad++ 在每第 n 次出现字符串/字符时插入新行
【发布时间】:2017-05-09 00:40:45
【问题描述】:

使用 Notepad++ 查找和替换 功能,我想在字符或字符串(在我的情况下为逗号)的每 n 个出现处插入一个新行。

我已经使用“正则表达式”模式尝试了下面的正则表达式,但没有运气。

查找内容: ((,){1000})

替换为\1\n

【问题讨论】:

  • 这行得通吗:(((.*?), ){1000})?我无法理解正则表达式。
  • 您评论中的正则表达式看起来更接近,您尝试过吗?
  • 不太清楚:fileline 中每第 n 次出现一次?
  • 如果表示一行,您可以使用(?:[^\n\r,]*,){2}(或者您的方法也可以使用-(?:.*?,){2})-> $&\n 在每秒, 之后插入一个\n

标签: regex notepad++


【解决方案1】:

如果您的意思是在一行上第 n 次出现任何字符串后添加一个换行符,我会使用

(?:.*?,){2}

并替换为$&\n(或$&\r\n),其中.*? 匹配除换行符之外的任何0+ 字符,尽可能少,直到, 第一次出现。 $& 是整个匹配值的反向引用(2 用于演示看起来更干净,1000 是一个相当大的值)。请参阅演示,该演示显示在每一秒 , 之后放置一个换行符。

对于单个字符,您最好使用否定字符类(但在此处添加换行符以强制模式不会跨行溢出):

(?:[^\n\r,]*,){2}

【讨论】:

  • 你会如何在 vim 中做到这一点?
  • @DanielvanFlymen:在 Vim 中,您需要替换为 \r 以插入换行符。而且由于 Vim 字符类不匹配换行符,所以没有必要在 [...] 中使用 \n\r。整个比赛的反向引用是&。所以,试试:%s/\([^,]*,\)\{2}/&\r/g
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 2018-08-11
  • 2021-08-10
  • 2018-03-24
  • 2022-01-18
  • 2019-04-02
  • 1970-01-01
相关资源
最近更新 更多