2016-06-23 3 views
1

Wenn ich einen Text habe, wie bekomme ich alle Zeichenfolgen mit einem bestimmten Muster aus dem Text? Zum Beispiel möchte ich alle Fäden mit diesem prasselt:Get alle Muster Word fom a Text

Das Wort CER gefolgt von any number gefolgt von einem diese Zeichen ;, ,, . oder space.

Für exemple aus dem Text unten ich in einem Array haben Wold wie die folgenden Ergebnisse: CER123, CER23, CER01, CER24

Lorem CER123 ipsum dolor sit amet, quod copiosae CER23, CER01; CER24 insolens et usu, vis CER34ERD ist die ideale Unterkunft.

Ich habe diese versucht:

preg_match_all ("/ CER [0-9 *] /?", $ Content, $ m);

aber es gibt: CER1, CER2, CER0, CER2 und CER3

Antwort

2

Verwenden +, eine Erfassungsgruppe hinzufügen und eine Zeichenklasse für die Charaktere erstellen Sie nach dem Wert benötigen Sie benötigen zu bekommen:

preg_match_all('/(CER[0-9]+)[;,.\s]/',$content,$m); 
       ^  ^^^^^^^^^ 

Siehe regex demo

Muster Erklärung:

  • (CER[0-9]+) - Gruppe 1, die Teile des Textes erfassen Sie brauchen:
    • CER - eine Folge von Literalen CER (HINWEIS: Wenn Sie CER nur ganzes Wort benötigen, nach ein Nicht-Wort-Zeichen oder am Anfang der Zeichenfolge, fügen Sie Wortgrenzen hinzu: \bCER\b)
    • [0-9]+ (= \d+) - 1 oder mehr Ziffern
  • [;,.\s] - jedes Zeichen innerhalb der Zeichenklasse: ;, ,, . oder \s (Leerzeichen - mit einem Leerzeichen ersetzen, wenn Sie nur einen regulären Raum bedeuten).

PHP demo:

$re= '/(CER[0-9]+)[;,.\s]/'; 
$content = "Lorem CER123 ipsum dolor sit amet, quod copiosae CER23,CER01;CER24 insolens et usu, vis CER34ERD ut saperet civibus accommodare."; 
preg_match_all($re, $content, $m); 
print_r($m[1]);