Thread Reguläre Ausdrücke: richtig interpretieren (6 answers)
Opened by Patrick at 2004-04-16 11:41

Strat
 2004-04-16 12:30
#81619 #81619
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Knuddlbaer,16.04.2004, 10:05]Braucht man das ? da überhaupt ?
Das .+ sagt aus das mindestens 1 beliebiges Zeichen folgen muss (bis unendlich) und ? sagt das es kein oder einmal vorhanden sein muss ?![/quote]
wie format_c schon andeutete: das problem bei .+ oder .* ist, dass perl versucht, da moeglichst viele zeichen zu erwischen. Um da so wenig Zeichen wie moeglich "einzufangen", stellt man hinter * oder + ein ?.
Code: (dl )
1
2
3
4
5
6
7
$string = qq~<tag1>text1</tag1><tag1>text2</tag1>~;
if ($string =~ m|<tag1>(.+)</tag1>|) {
print "VIEL: $1\n";
}
if ($string =~ m|<tag1>(.+?)</tag1>|) {
print "WENIG: $1\n";
}

beim erstenmal wird text1</tag1><tag1>text2 ausgegeben, beim zweiten mal nur text1, weil da durch (.+?) so wenig wie moeglich gecaptured (=eingefangen) wird...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Reguläre Ausdrücke: richtig interpretieren