2017-03-12 3 views
0

Muster beginnt immer mit einem bestimmten Schlüssel (im Beispiel ist es benötigt Anfang) Wert kann mehrzeilig sein. Muster kann mit einem bestimmten Schlüssel enden (im Beispiel ist es ending1 oder ending1). Beendigungsschlüssel können beide oder nur einen von ihnen im Eingabetext darstellen. Wenn beide, dann nur die erste von ihnen benötigt wird.Regex Bedingte Beendigung einer Vorlage

für dieses Beispiel Meine RegexMuster wie folgt aussieht: needed beginning([\S\s]*)(?>ending1|ending2)

hier ein Regex101 ist nicht example

Zweite Erfassungsgruppe arbeitet, ist völlig falsch, und ich weiß nicht, wie man diesen Fall zu realisieren

Eingabetext kann wie folgt sein:

some 
other 
not 
interesting 
text 
needed beginning 
value  <-- 
can be  <-- this needed to be captured 
multiline <-- 
ending1 
some other values 
and other 
ending2 
some 
other 
not 
interesting 
text 

Oder wie folgt aus:

some 
other 
not 
interesting 
text 
needed beginning 
value  <-- 
can be  <-- this needed to be captured 
multiline <-- 
ending2 
some 
other 
not 
interesting 
text 

Antwort

2

Das funktioniert für Sie? Aktualisiert: https://regex101.com/r/SBNUQG/2

regex: benötigt beginnen (. *?) (ENDING1 | ENDING2)

Mit der Option "single line"

+1

Der größte Teil der aktuellen Logik mit mehrzeiligen Eingabe arbeitet und das Hinzufügen dieses Flag wird führen zu der Notwendigkeit, andere Teile zu überprüfen und zu ändern. Ist es möglich, dies zu tun, ohne 'singleline' Flag hinzuzufügen? – aleha

+0

@aleha Sie können das "s" -Flag vermeiden, wenn Sie 'benötigten Anfang ([\ s \ S] *?) (Ending1 | ending2)' verwenden. –

+0

'*?' Das ist ein Punkt. Danke. – aleha