2016-04-26 12 views
-3

Wie ignoriere ich abc und def, 01 in unter Ausdruck mit Regex. Ich habe versucht, mich zu ignorieren, es funktioniert nicht.Wie erstellt man diesen regulären Ausdruck?

Abc-def-SMDP-01

+1

Bitte lesen Sie bauen [Wie ein Minimal, Vollständig, erstellen und Überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). Dann komm zurück und redest deine Frage entsprechend. – Jan

Antwort

1

Ein Weg zu gehen, ist die ursprüngliche Zeichenfolge in Präfix, Teil von Interesse zu teilen, und Suffix, in dem Affixe die unerwünschten charcters Entfernen danach:

$raw = "abc-def-smdp-01"; 

preg_match ("/^(.*)(-smdp-)(.*)$/", $raw, $matches); // separate original string into prefix, trunk, suffix 
$matches[1] = preg_replace ("/[^-]/", "", $matches[1]); // non-'-' characters deleted in prefix 
$matches[3] = preg_replace ("/[^-]/", "", $matches[3]); // non-'-' characters deleted in suffixfix 
$result = $matches[1].$matches[2].$matches[3]; // composing target string 

echo $result; 

Online-Demo verfügbar here.

NB

Probleme ähnlich wie diese können mit einer gewissen Kenntnis der PHP-Funktion Bibliothek, deren doc within the online php manual kommt mit exakt Syntax, Beispielcode und Benutzerkommentare leicht in Angriff genommen werden.

In diesem Fall sehen:

Natürlich nimmt zumindest ein oberflächliches Verständnis für die zur Verfügung stehenden Einrichtungen geeignete Kandidaten für die beabsichtigte Funktionalität zu finden, das macht die 15 Minuten des Surfens in der hierarchical index eine vernünftige Investition der Zeit

+0

können Sie mir das sagen mit Regex nicht in PHP – chethan

+0

Was ist Ihre Programmierumgebung? Und warum kennst du deine Frage mit 'preg_match', wenn es nicht php ist? – collapsar

+0

Klärung meines vorherigen Kommentars: Pure regexen werden verwendet, um Textmuster _ zu vergleichen - Sie möchten jedoch auch die Funde modifizieren, die Kenntnisse darüber benötigen, welche Programmierumgebung verwendet wird. – collapsar

0

würde ich dieses Muster verwenden:

preg_match("/\w+\-\w+\-(\w+)\-\d+/", "Abc-def-smdp-01", $output); 
Echo $output[1]; 

http://www.phpliveregex.com/p/ftB

EDIT: oder benötigen Sie die Striche?
In diesem Fall müssen Sie dieses Muster verwenden: "/\w+(\-)\w+(\-)(\w+)(\-)\d+/"
Und dann gibt sie als:
echo $output[1].$output[2].$output[3].$output[4];
oder Schleife es und eine Zeichenfolge mit .=

Verwandte Themen