-5

I want a regular expression which will match one or more instances of text followed by a newline. Following the final match of text followed by a newline I would like for a single further newline, then no more. How would I go about achieving this?

I am having difficulty in enforcing the one new line rule.

My (wrong) attempts include: [^\n]+\n\n ([^\n]+\n[^\n]+)*\n\n

An example of text i would like to match is:

"Hello text\nMore text\nLast one\n\n"

With a non-match on both:

"Hello text\nMore text\nLast one\n\n\n"

"Hello text\nMore text\nLast one\n"

PLease help me. thanks

Henry Woody
  • 14,024
  • 7
  • 39
  • 56

1 Answers1

0

You're asking to match any number of lines of text, followed by only 1 additional newline at the end, simply: ^(.+\n)+\n(?!\n) will do what you'd like.

Example here: https://regex101.com/r/Hy3buP/1

Explanation:

^                        - Assert position at start of string
 (.+\n)+                 - Match any positive number of lines of text ending in newline
        \n               - Match the next newline
          (?!\n)         - Do a negative lookahead to ascertain there are no more newlines.
A. Bandtock
  • 1,233
  • 8
  • 14