grep - zum Haare raufen

Soapp

Erfahrenes Mitglied
<span id="_ctl0_DefaultDetail1_DetailExpose1_DetailAddressData1_lblPhone">Telefon : 035xx/215115<br></span>

wie krieg ich aus der Zeile mit grep

Telefon : 035xx/215115

raus ?

Momentan heisst es:

@tel = grep /Telefon :/, <FILE> ;

Danke
 
Ist grep hier nicht fehl am Platz?

grep ist eigentlich nicht gedacht um Informationen zu extrahieren, sondern einen Bestand (meist ein Array) an Informationen nach einem Muster zu Filtern. Also würde man z.B. eine Datei nehmen, die am Newline-Character zerlegen, in ein Array packen und dann mittels

Code:
my @lines = grep { /Telefon:/i } @linesOfFile;

sich erstmal alle betreffenden Zeilen holen. Grep ist also gedacht, um aus einer Menge A eine Teilmenge B anhand gegebener kriterien zu erstellen.

Die Telefonnummer würde ich dann in einem 2. Durchlauf mittels einem Regex in einer if-Abfrag extrahieren:

Code:
foreach(@lines) {
   if(m~Telefon : (\d+/\d+)~) {
      # in $1 steckt jetzt die Telefonnummer
   }
}

So ist das meiner Meinung nach die sauberere Lösung.

Wers lieber perlish kurz und kryptisch mag, bedient sich wohl eher soetwas:
Code:
map { tuWas($1) if(m~Telefon : (\d+/\d+)~) } grep { /Telefon :/ } @linesOfFile;

Wobei das etwas unsauber ist, da map nichtmehr im void kontext benutzt werden sollte. ;)
 
Zurück