2016-06-27 1 views
-1

Sagen Sie bitte die Start- und End-Linien von einigen Textabschnitt wissen, aber die Zeichen in einigen Zeilen und die Anzahl der Zeilen zwischen dem Start- und End-Linien sind variabel, á la:Wie quantifizierst du eine variable Anzahl von Zeilen mit einem regulären Ausdruck?

aaa
bbbb
cc
...
...
...
xx
yyy
Z

Welche quantifier haben Sie verwenden, so etwas wie:

aaa \ nbbbb \ ncc \ n (. * \ N) + xx \ nyyy \ nz \ n

diese Textabschnitte als Gruppe zu analysieren?

+0

Kann es in den Start- und Endsätzen Zeilenumbrüche geben? –

Antwort

0

Sie können das Flag s verwenden, um mehrzeilige Texte zu vergleichen. Sie können dies wie folgt tun: ~\w+ ~s. Es gibt eine ähnliche Frage hier: Javascript regex multiline flag doesn't work

+0

bemerkte, dass der genaue Inhalt der ersten "aaa", "bbbb", ... und letzten ..., "yyy", "Z" Zeilen, die ich kenne. Zwischen diesen Zeilen könnte in vielen Zeilen etwas erscheinen. Ich benutze meistens Regexps mit Eclipse, Kate und Office's Writer –

0

Wenn ich das richtig verstanden, Sie wissen, dass Sie Ihren Text mit aaa\nbbbb\ncc beginnt und endet mit xx\nyyy\nZ\n. Sie könnten aaa.+?bbbb.+?cc(.+?)xx.+?yyy.+?Z verwenden, damit alle Operatoren nicht gierig sind und Sie nicht versehentlich zwei Gruppen auf einmal erfassen. Der Text zwischen diesen Gruppen befindet sich in der Übereinstimmungsgruppe 1. Sie müssen auch die Einstellung ändern, die bewirkt, dass der Punkt mit der neuen Zeile übereinstimmt.

0

Try this:

aaa(|\n)bbbb(|\n)cc(|\n)(|\n){0,1}(.|\n)*xx(|\n)yyy(|\n)Z 

(| \ n) entspricht ein Leerzeichen oder eine neue Zeile (so Ihre Start- und End-Sätze lassen sich in verschiedene Linien aufgeteilt werden)

RegExr

0

Bei der Ende des Tages, was für mich arbeitete mit Kate war:

()+aaa\n()+bbbb\n()+cc\n(.|\n)*()+xx\n()+yyy\n()+Z\n 

u Singe solche Regexps, du kannst Seiten von ziemlich viel Junk löschen.

Verwandte Themen