Schrift
[thread]8833[/thread]

Mehrzeiliger regex matcht nicht inline



<< >> 4 Einträge, 1 Seite
emwede
 2007-03-12 18:34
#74974 #74974
User since
2007-03-12
2 Artikel
BenutzerIn
[default_avatar]
Ich lade nächtlich per svn einige Dateien vom Server auf ein Testsystem. Diese sollen (nur in der lokalen Kopie und diese soll nicht eingecheckt werden) bei jedem svn-Export einige automatische Modifikationen erfahren. So soll z.B. in der "function output" hinter dem Text "Zeile2" der Text "printed after regex\n" eingefügt werden.

Die "test"-Datei sieht wie folgt aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
output()
#kommentar
call output();
#kommentar
#und noch einer
function output(){
Zeile1;
Zeile2;
Zeile3;
Zeile4;
}
output();
#kommentar
call output();
#kommentar
#und noch einer
Zeile1;
Zeile2;
Zeile3;
                   

Der regex
Code: (dl )
function output\(\).*?Zeile2
matcht sehr schön genau den Abschnitt, nach dem ich meinen Text einfügen will.

Leider krieg ich folgenden perl Einzeiler nicht dazu das Pattern zu matchen.

Code: (dl )
perl -ni -e 'print;print "printed after regex\n" if($_ =~ /function output\(\).*?Zeile2/)' test 



Dotall modifier direkt hinter dem zweiten/des regex wurde auch schon probiert.

Alle Tipps willkommen.

Danke und Gruß
emwede\n\n

<!--EDIT|emwede|1173717327-->
renee
 2007-03-12 19:51
#74975 #74975
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
damit der . auch auf Zeilenenden matcht, muss der s-Modifier verwendet werden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
emwede
 2007-03-13 08:17
#74976 #74976
User since
2007-03-12
2 Artikel
BenutzerIn
[default_avatar]
Hi renee, Du meinst so:

Code: (dl )
perl -ni -e 'print;print "printed after regex\n" if($_ =~ /function output\(\).*?Zeile2/s)' test


Wie bereits oeben erwähnt tut das auch nicht (das s war das was ich mit dotall-Modifier meinte).\n\n

<!--EDIT|emwede|1173766711-->
renee
 2007-03-13 10:23
#74977 #74977
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Achso, ja klar... Es wird ja immer nur die aktuelle Zeile in $_ gehalten. Bei dem Einzeiler wird nicht der komplette Inhalt der Datei auf einmal eingelesen. Du müsstest also erstmal den gesamten Inhalt in eine Variable speichern und dann die Regex ausführen.

Da wird es wohl geschickter sein, einen kleinen 3 Zeiler zu schreiben und dann das Programm aufzurufen.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 4 Einträge, 1 Seite



View all threads created 2007-03-12 18:34.