Notepad++ insert new line at every nth occurrence of a string/character

13,125

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}

enter image description here

Share:
13,125

Related videos on Youtube

Pugazh
Author by

Pugazh

I'm a full stack developer & I like learning :-)

Updated on September 18, 2022

Comments

  • Pugazh
    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
      Wiktor Stribiżew over 7 years
      If 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
    Daniel van Flymen almost 7 years
    How would you do this in vim?
  • Wiktor Stribiżew
    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.