Notepad++ insert new line at every nth occurrence of a string/character
If you mean to add a newline after nth occurrence of any string on a line, I'd use
(?:.*?,){2}
and replace with $&\n
(or $&\r\n
) where .*?
matches any 0+ chars other than line break characters, as few as possible, up to the first occurrence of ,
. The $&
is the backreference to the whole match value (2
is used for the demo to look cleaner, 1000
is a rather big value). See a demo showing that a newline is placed after each second ,
.
With a single char, you'd better use a negated character class (but add line break chars there to force the pattern to not overflow across lines):
(?:[^\n\r,]*,){2}
Related videos on Youtube
Comments
-
Pugazh over 1 year
Using Notepad++ Find and Replace feature, I would like to insert a new line at every nth occurrence of a character or string (a comma in my case).
I have tried the regex below using "Regular expression" mode, but no luck.
Find what:
((,){1000})
Replace with:
\1\n
-
Wiktor Stribiżew over 7 yearsIf a line is meant, you may use
(?:[^\n\r,]*,){2}
(or your approach will also work -(?:.*?,){2}
) ->$&\n
to insert a\n
after every second,
.
-
-
Daniel van Flymen almost 7 yearsHow would you do this in vim?
-
Wiktor Stribiżew almost 7 years@DanielvanFlymen: In Vim, you need to replace with
\r
to insert a newline. And since Vim character classes do not match line breaks, there is no need to use\n\r
in the[...]
. And the backreference to the whole match is&
. So, try:%s/\([^,]*,\)\{2}/&\r/g
.