Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7094[/thread]

suche nach elementen mit regexp



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
seven-12
 2005-07-01 16:34
#55874 #55874
User since
2005-07-01
6 Artikel
BenutzerIn
[default_avatar]
Hallo, ich habe in einer Datei diese Elemente:
<meta>
<title>
</title>
<url>
</url>
</meta>

ich muss den Inhalt dieser Elementen auslesen. Ich mache es so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if ($content =~m|<meta>(.*)</meta>|) 
    {
    $meta = $1;
   
   
    if($meta= ~m|<titel>(.*)</titel>|)
    {
   
    $titel = $;
   
  }
    }
    if($titel = ~m|<url>(.*)</url>|)
    {
    $url = $1;
   
    }

bei Abfrage vom $meta bekomme ich was ich möchte, alle Elemente:
bei titel bekomme ich wieder dasselbe wie bei meta, wa s mache ich falsch?

ich danke im Voraus.

seven

edit pq: code-tags hinzugefügt\n\n

<!--EDIT|pq|1120225068-->
Strat
 2005-07-01 16:43
#55875 #55875
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
keine ahnung; hier ein paar allgemeine probleme, ueber die du vielleicht stolperst:

1. der punkt matcht normalerweise nicht auf einen zeilenumbruch; damit er es doch tut, brauchst du das flag /s (z.B. $meta =~ m|<title>(.+)</title>|s)

2. =~ und = ~ sind zwei unterschiedliche sachen; = ist eine zuweisung und ~ ist ein binaeres not (einfache Dateient-/-verschluesselung:
Code: (dl )
perl -pe "$_ = ~$_" infile > outfile


3. .* versucht, soviele zeichen zu schlucken wie moeglich:
Code: (dl )
1
2
3
4
$string = "<title>abcde</title><title>defg</title>";
if ($string =~ m|<title>(.*)</title>|) {
print $1;
}

ergibt nicht abcde; das ergibt erst
Code: (dl )
1
2
3
4
$string = "<title>abcde</title><title>defg</title>";
if ($string =~ m|<title>(.*?)</title>|) {
print $1;
}
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2005-07-01 16:46
#55876 #55876
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ah, jetzt verstehe ich dein problem, punkt zwei erschlaegt dich:
Code: (dl )
if($meta= ~m|<titel>(.*)</titel>|

durch das leerzeichen zwischen = und ~ wird das anders aufgeloest:
Code: (dl )
if ($meta = ~( $_ =~ m|<titel>(.*)</titel>| )) {

in $_ steht aber nichts in der form drinnen, also captured (.*) da auch nicht, und $1 bleibt das, was es vorher war.\n\n

<!--EDIT|Strat|1120222089-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
seven-12
 2005-07-01 16:48
#55877 #55877
User since
2005-07-01
6 Artikel
BenutzerIn
[default_avatar]
nein es geht nicht so, nichts ändert sich
Strat
 2005-07-01 16:50
#55878 #55878
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
was meinst du mit so? was hast du geaendert? wie sieht dein code aus?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
seven-12
 2005-07-01 16:56
#55879 #55879
User since
2005-07-01
6 Artikel
BenutzerIn
[default_avatar]
na ja ich habe ? eingefügt, keine änderung
wie kan ich verschachtelte Elemente durchsuchen ?
Strat
 2005-07-01 17:02
#55880 #55880
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
dann lies nochmal meine beiden postings von oben... und wenn du was nicht verstehst, ist es besser, wenn du nachfragst, als wenn du ignorierst, was ich schreibe...\n\n

<!--EDIT|Strat|1120223088-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
seven-12
 2005-07-01 17:07
#55881 #55881
User since
2005-07-01
6 Artikel
BenutzerIn
[default_avatar]
Strat,

mein Quelltext sieht genauso wie Deiner aus.
seven-12
 2005-07-01 17:11
#55882 #55882
User since
2005-07-01
6 Artikel
BenutzerIn
[default_avatar]
sorry Strat, ich habe Deinen KOmmentar nicht gesehen, jetzt probiere ich es aus, danke
pq
 2005-07-01 17:37
#55883 #55883
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=seven-12,01.07.2005, 14:34]    $titel = $;[/quote]
typo?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2005-07-01 16:34.