Schrift
[thread]9140[/thread]

Ein string auf ein Musterüberprüfen !



<< |< 1 2 3 4 ... 6 >| >> 52 Einträge, 6 Seiten
mr-sansibar
 2007-06-29 17:48
#78020 #78020
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
Hallo !
Ich lese ein Zeile von einer Datei in ein String ein
Der String inhalt sihet folgendermassen aus:
Context: 26.06.2007 04:08:30,274 ab2e 1256 741 56 de.x.yy.zz

Ich will auf dieses Muster überprüfen:
Context: 26.06.2007 04:08:30,274

Nach Context kommen zwei Leerzeichen, danach ein Datum und ein leer Zeichen und anschließend Uhrzeit.

Könnte es einfach nicht lösen mit regulären ausdrücken.

Danke für eure Hilfe\n\n

<!--EDIT|mr-sansibar|1183125045-->
renee
 2007-06-29 17:56
#78021 #78021
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
/(Context:\s+(?:\d{2}\.){2}\d{4}\s+(?:\d{2}:){2}\d{2},\d{3})/


oder

Code: (dl )
/(Context:[^,]+,\d{3})/
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/
mr-sansibar
 2007-07-03 16:27
#78022 #78022
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
Vielen Dank Renee !
Eine sache muss du mir erklären, warum hast du an den fettgedruckten stellen nicht den ausdrüch d{2} ???

Quote
/(Context:\s+(?:\d{2}\.){2}\d{4}\s+(?:\d{2}:){2}\d{2},\d{3})/


Grüße, Ümit
renee
 2007-07-03 16:56
#78023 #78023
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Weil nach den Zahlen noch der Punkt '.' bzw. der Doppelpunkt ':' kommt... Oder wo liegt jetzt genau Dein Problem mit dem RegEx?
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/
sid burn
 2007-07-03 17:16
#78024 #78024
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=mr-sansibar,03.July.2007, 14:27]Vielen Dank Renee !
Eine sache muss du mir erklären, warum hast du an den fettgedruckten stellen nicht den ausdrüch d{2} ???

Quote
/(Context:\s+(?:\d{2}\.){2}\d{4}\s+(?:\d{2}:){2}\d{2},\d{3})/


Grüße, Ümit[/quote]
Geschweifte Ausdrücke mit Zahl darin sagen das das vorherige etwas bestimmt so oft vorkommt wie angegeben. Übrigens ist der Ausdruck nicht d{2} sonder \d{2}

d{2} würde bedeutet das "d" kommt zweilmal vor. also "dd". \d steht für eine Ziffer, und davon kommen zwei hintereinander. Ist also "ungefähr" vergleichbar mit dem hier "[0-9][0-9]".


Bei Renne gibt es folgendes: (?:\d{2}\.){2}

Das bedeutet letztendlich das er zweimal (?:\d{2}\.) haben möchte. Also sozusagen das hier: (?:\d{2}\.)(?:\d{2}\.)

Abgekürzt halt eben mit dem {2}.

Warum Renee das aber so kompliziert macht weiß ich auch nicht. Hätte es einfach ausgeschrieben...

"\d\d.\d\d." ist kürzer und deutlich verständlicher.


Ich würde Renees Regrex etwas verstänlicher folgendermaßen schreiben:
Code: (dl )
/(Context:\s+(?:\d{2}\.){2}\d{4}\s+(?:\d{2}:){2}\d{2},\d{3})/

Code: (dl )
/(Context:  \s+  \d\d.\d\d.\d{4}  \s+  \d\d:\d\d:\d\d,\d{3})/xms


Aber Just my 2 Cents. ;)\n\n

<!--EDIT|sid burn|1183468721-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2007-07-03 17:41
#78025 #78025
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=sid burn,03.07.2007, 15:16]Warum Renee das aber so kompliziert macht weiß ich auch nicht. Hätte es einfach ausgeschrieben...

"\d\d.\d\d." ist kürzer und deutlich verständlicher.[/quote]
Ich habe mir das so "umständlich" angewöhnt, weil ich es schon mehrfach hatte, dass sich irgendwelche Zeichen (wie hier z.B. das ':') "mal eben" geändert haben und ich dann im RegEx nur eine Stelle ausgebessert habe... Und der Effekt bei {2} mag noch nicht so wirklich prickelnd sein, aber wenn es mal {100} oder so ist, dann hilft es viel ;)
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/
mr-sansibar
 2007-07-03 19:00
#78026 #78026
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
Vielen Dank für Eure Hilfe !
mr-sansibar
 2007-07-04 15:25
#78027 #78027
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
$line =~ s/\s/ /g; 
$line =~ s/^Context:\s+//g;


Kann man dieses REGEX-Ausdruck nicht einfacher darstellen ?
bloonix
 2007-07-04 15:34
#78028 #78028
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Code: (dl )
$line =~ s/\s/ /g;

Ja, diesen Ausdruck kannst du weglassen, denn er ersetzt ein Whitespace
durch ein Whitespace ;) meintest du vielleicht sowas hier:

Code: (dl )
$line =~ /\s+/ /g;

Das macht aus vielen aneinanderhängenden Whitespaces eins.

Code: (dl )
$line =~ s/^Context:\s+//g;

Was hast du daran auszusetzen? Das ist voll okay.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2007-07-04 15:41
#78029 #78029
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=opi,04.07.2007, 13:34]
Code: (dl )
$line =~ s/\s/ /g;

Ja, diesen Ausdruck kannst du weglassen, denn er ersetzt ein Whitespace
durch ein Whitespace ;)[/quote]
Ist nur teilweise richtig. Es ersetzt ein Whitespace durch ein Leerzeichen (was ein Teil der Whitespaces ist).

So wird mit diesem Ausdruck z.B. auch ein Tabulator durch ein Leerzeichen ersetzt.
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/
<< |< 1 2 3 4 ... 6 >| >> 52 Einträge, 6 Seiten



View all threads created 2007-06-29 17:48.