2012-04-07 19 views
0

Ich habe ein Array, die etwa wie folgt aussieht:PHP Regular Expression preg_grep

$array[] = 'MT0001ENG Apricot, dried'; 
$array[] = 'MT0001SYS Prunus armeniaca L.'; 
$array[] = 'MT0001YLD 0'; 
$array[] = 'MT0001MGR 06'; 
$array[] = 'MT0001SGR 20'; 
$array[] = 'MT0001NCF 6.25'; 
$array[] = 'MT0001FCF 0.800'; 
$array[] = 'MT0001000 1159       00050'; 
$array[] = 'MT0001001 2.9   2.6 3.5 4  05165'; 
$array[] = 'MT0001002 0.1   0.1 0.1 4  00050'; 
$array[] = 'MT0003ENG Pineapple, raw'; 
$array[] = 'MT0003SYS Ananas comosus (L.) Merr.'; 
$array[] = 'MT0003YLD 47'; 
$array[] = 'MT0003MGR 06'; 
$array[] = 'MT0003SGR 40'; 
$array[] = 'MT0003NCF 6.25'; 
$array[] = 'MT0003FCF 0.800'; 
$array[] = 'MT0003000 232       00050'; 
$array[] = 'MT0003001 0.5   0.5 0.6 4  05165'; 
$array[] = 'MT0003002 0.1   0.1 0.1 4  00050'; 

ich alle Linien bin setzen, die die Namen enthält, in ein Array $ Namen wie folgt aufgerufen:

$names = preg_grep("/ENG/", $array); 

Aber jetzt möchte ich alle Zeilen, die die Protein-Info enthält, in ein Array namens $ Protein setzen. Beispiel für Proteinlinien ist:

$array[] = 'MT0001001 2.9   2.6 3.5 4  05165'; 
$array[] = 'MT0003001 0.5   0.5 0.6 4  05165'; 

Wie Sie sehen können, gibt es ein Muster. Alle Linien beginnen mit MT. Gefolgt von einer 4-stelligen Produktnummer. Gefolgt von 3 Zeichen, und für Proteine, das sind 001 :)

Ich habe Folgendes versucht, ohne Glück!

$proteins = preg_grep("/MT{4}[0-9]001/", $array); 
+0

Überprüfen Sie meine aktualisierte Frage :) – mnstrflkrn

+0

So müssen Sie nur den '{4}' Quantifizierer nach dem Dezimalsmuster '[0-9]' dann tauschen. Fügen Sie auch einen Anker '^' am Anfang hinzu, weil Sie den String-Anfang bestätigen sollten. – mario

+0

Welche Daten möchten Sie erhalten? Zum Beispiel, in der ersten Array-Element (MT0001001), möchten Sie 2,9 oder 2,6 oder 3,5 usw.? – Odyssey

Antwort

1
$names = preg_grep("/MT\d{4}001.*/", $array); 

Spiels ‚MT‘ von 4 Ziffern gefolgt, gefolgt von ‚001‘, gefolgt von null oder mehr von beliebigen Zeichen

Sie können mit diesem Spiel ein wenig leichter mit einem Werkzeug wie RegExr, heren ein Link zu Ihrem Beispiel: http://regexr.com?30irf

+0

Ich brauchte die. *, Aber der Rest funktioniert! Vielen Dank mein Freund! – mnstrflkrn