ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
1186
1186
EMPFEHLEN
-
17.01.07 16:51 #1
Mitglied Gold
- Registriert seit
- May 2004
- Ort
- Vienna
- Beiträge
- 184
Hallo Leute!
Muss ein Projekt, welches in Perl geschrieben ist, überarbeiten, und bin dabei auf folgenden mysteriösen Ausdruck gestoßen:
Code :1
my $pattern = '^([^\=]+)\=(.*)$';
Ich weiß zwar, wofür die REs gut sind und was sie bewirken - aber ich tu mir schwer beim Entschlüsseln.
Was bewirkt diese RE?!
Wär super, wenn mir jemand weiterhelfen könnte - danke!
lg D
c
Ein kluger Mensch macht nicht alle seine Fehler alleine, sondern er gibt auch anderen eine Chance.
-
18.01.07 10:44 #2
Mitglied Brokat
- Registriert seit
- Jan 2004
- Beiträge
- 332
Das sammelt alles bis zum ersten "=" und alles danach...
Code :1 2 3 4 5 6 7 8 9 10 11 12
#!/usr/bin/perl use strict; use warnings; my $pattern = '^([^\=]+)\=(.*)$'; my @texte = ('Key=Value', 'Hallo=Test', 'Dies=ist=ein=Test'); for(@texte){ my ($key,$value) = $_ =~ /$pattern/; print "Key: $key -- Value: $value\n"; }
Code :1 2 3 4
~/entwicklung 61> perl key_value.pl Key: Key -- Value: Value Key: Hallo -- Value: Test Key: Dies -- Value: ist=ein=Test
Aber um ehrlich zu sein, sollte man das besser mit split machen (schneller, speicherschonender, lesbarer)
Code :1 2 3 4 5
my @texte = ('Key=Value', 'Hallo=Test', 'Dies=ist=ein=Test'); for(@texte){ my ($key,$value) = split /=/,$_,2; # teile am ersten "=" print "Key: $key -- Value: $value\n"; }
Wenn Du mal wieder eine RegEx erklärt haben möchtest und Du möchtest nicht erst auf Antwort warten, kannst Du auch das Modul YAPE::Regex::Explain verwenden...
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
The regular expression: (?-imsx:^([^\=]+)\=(.*)$) matches as follows: NODE EXPLANATION ---------------------------------------------------------------------- (?-imsx: group, but do not capture (case-sensitive) (with ^ and $ matching normally) (with . not matching \n) (matching whitespace and # normally): ---------------------------------------------------------------------- ^ the beginning of the string ---------------------------------------------------------------------- ( group and capture to \1: ---------------------------------------------------------------------- [^\=]+ any character except: '\=' (1 or more times (matching the most amount possible)) ---------------------------------------------------------------------- ) end of \1 ---------------------------------------------------------------------- \= '=' ---------------------------------------------------------------------- ( group and capture to \2: ---------------------------------------------------------------------- .* any character except \n (0 or more times (matching the most amount possible)) ---------------------------------------------------------------------- ) end of \2 ---------------------------------------------------------------------- $ before an optional \n, and the end of the string ---------------------------------------------------------------------- ) end of grouping ----------------------------------------------------------------------
-
23.01.07 09:16 #3
Mitglied Gold
- Registriert seit
- May 2004
- Ort
- Vienna
- Beiträge
- 184
Vielen Dank für deine Hilfe, renee!

lg D
c
Ein kluger Mensch macht nicht alle seine Fehler alleine, sondern er gibt auch anderen eine Chance.
Ähnliche Themen
-
[VBS]Regular Expression
Von Dark Ranger im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 19.10.07, 09:59 -
regular expression
Von jenno im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 07.09.06, 11:32 -
Regular Expression
Von time-master im Forum PHPAntworten: 7Letzter Beitrag: 29.01.06, 15:22 -
regular expression
Von hudo im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 2Letzter Beitrag: 26.08.04, 16:37 -
Regular Expression
Von Norbert Eder im Forum PHPAntworten: 4Letzter Beitrag: 28.04.04, 12:24




Zitieren
Login