Schrift
[thread]6746[/thread]

Mehrere reguläre Ausdrücke finden (Seite 2)



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Stephan
 2005-03-18 10:34
#52180 #52180
User since
2005-01-12
2 Artikel
BenutzerIn
[Homepage] [default_avatar]
So noch einmal vielen, vielen Dank für die Hilfe!
(Ich war krank, deshalb so spät erst meinen Dank)

Hier meine Umsetzung dank Eurer Hilfe:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
          #Prüfung: Angaben können mehrfach vorhanden sein
         # $line hält den Inhalt einer XML-Datei
         # in eine Zeile zusammengeschrieben

          my $foo = $line;

          for my $bar ( $foo =~  /<AdPubDate(.*?)>/g ) {          
           my ($merkmal) = $bar =~ /Date=\"(.*?)\"/;
           
           #Hier Überprüfung jedes Merkmals
           
          };


Sicher nicht schön, aber alle vorhandenen Tags mit "<AdPubDate...>" werden gefunden und ein jeweils darin enthaltenes Merkmal Date="..." wird ausgelesen und geprüft.

Sicher stimmt es, daß es sinnvoller wäre einen XML-Parsern zu verwenden, allerdings entstand das ganze aus dem typischen "...kannst Du nicht mal für mich ... ganz schnell ... nur mal eben ...aus einer Textdatei was auslesen und ...?".
Und dann wurde es immer mehr ;-)

Vielen Dank noch einmal!
Stephan

edit pq: code-tags\n\n

<!--EDIT|pq|1111141596-->
pq
 2005-03-18 12:23
#52181 #52181
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
Wiki:Punkt 4 bitte lesen und anwenden.
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
Crian
 2005-03-21 17:45
#52182 #52182
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
[quote=Stephan,18.03.2005, 09:34]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
          #Prüfung: Angaben können mehrfach vorhanden sein
# $line hält den Inhalt einer XML-Datei
# in eine Zeile zusammengeschrieben

my $foo = $line;

for my $bar ( $foo =~ /<AdPubDate(.*?)>/g ) {
my ($merkmal) = $bar =~ /Date=\"(.*?)\"/;

#Hier Überprüfung jedes Merkmals

};
[/quote]
Nur mal so als Tipp: Ich würd die regulären Ausdrücke immer so eng und defensiv wie möglich formulieren, also <AdPubDate\s*([^>]*)> und Date\s*=\s*\"([^"]*)\".

Falls Du keine Schweinereien wie "ab\"cd" hast (weil Du weißt, aus welchem Prozess die Datei stammt), dann komt man damit ziemlich weit. Das ist hilfreich, wenn man merkt, dass die CPAN-Parser einen an bestimmten Stellen auch alleine lassen.

Ansonsten wirf mal einen Blick auf XML::Simple und Konsorten...\n\n

<!--EDIT|Crian|1111419984-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2005-02-28 17:22.