I want to split the text above in three results. Every result starts with the word "Leistung" and can optionally have a second line starting with "Zusatz".
My regex-expression ist currently this:
/Leistung [ ]*[\w\d äöüÄÖÜ]*\n[\w\d äöüÄÖÜ\*]*/gm
But this does not fit exactly.
This ist the text:
Leistung Armeotraining ET Anzahl 1
Zusatz *TextZusatz_Anf1*
Leistung Atemtherapie 30 Anzahl 2
Leistung Aktivierungsgruppe Anzahl 3
Zusatz *TextZusatz_Anf3*
The result should be:
Leistung Armeotraining ET Anzahl 1
Zusatz *TextZusatz_Anf1*
Leistung Atemtherapie 30 Anzahl 2
Leistung Aktivierungsgruppe Anzahl 3
Zusatz *TextZusatz_Anf3*
Can anyone help me with the regex-expression? Thank you in advance!
Tobias
CodePudding user response:
You could try this:
/Leistung.*(?:\n(?!Leistung).*)?/gm
RegEx Explanation:
(?:\n(?!Leistung).*)?
: only capture the second line if it does not start with Leistung
CodePudding user response:
You can split at newlines if the word Leistung
is ahead:
\n(?=Leistung\b)
See this demo at regex101 - \b
is a word boundary
Use \r?\n
for crlf or \R
if supported (eg PCRE/PHP).