2017-05-30 3 views
0

Ich habe diese Ausgabe mit einem Befehl:Wie benutze ich preg_match für meinen Fall?

can0 02001600 [2] 00 00 can0 07001600 [2] 00 00 can0 11001600 [2] 5C A7 

Es ist nicht jedes Mal in der gleichen Reihenfolge, kann es sein:

can0 11001600 [2] 5C A7 can0 02001600 [2] 00 00 can0 07001600 [2] 00 00 

"5C A7".
ich dies tun:

preg_match("11001600 [2] [A-Z0-9]",$output); 

Aber es gibt mir 0 so bedeutet dies, dass es nicht gefunden hat. Wie mache ich ?

+0

Sie einige grundlegende Konzepte über die PCRE fehlen, gehen Sie mit dem [Handbuch] (http://php.net/manual/en/book.pcre. php) und lesen Sie über Muster – hassan

+1

@Zekeriya Mit Blick auf Ihre früheren Fragen scheinen Sie einer von denen zu sein, die niemals eine Antwort akzeptiert. Beide Antworten unten tun, was Sie brauchen. Vielleicht brauchst du nur Hilfe dabei. Lesen Sie hier, wie und warum die Antworten zu akzeptieren https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Andreas

Antwort

1

Sie sind fast da.
Die [ ist ein Regex-Zeichen und muss maskiert werden, um als Zeichenfolge in der Regex verwendet werden.

https://regex101.com/r/Dm12mr/2

/11001600 \[2\] ([A-Z0-9]{2} [A-Z0-9]{2})/ arbeitet

EDIT: Passwort()

+0

Sie können den Code in Aktion hier https://3v4l.org sehen/N9D4L – Andreas

1

Try this code snippet here

Regex:11001600 \[2\]\s+\K[A-Z0-9]{2}\s+[A-Z0-9]{2}

1.11001600 \[2\]\s+\K Dies entspricht 11001600 [2]\K wird aktuelle Übereinstimmung zurückgesetzt.

2.[A-Z0-9]{2}\s+[A-Z0-9]{2} wird diese A-Z, 0-9 und {2} für zwei Mal passen ist.

<?php 

ini_set('display_errors', 1); 
$string="can0 11001600 [2] 5C A7 can0 02001600 [2] 00 00 can0 07001600 [2] 00 00 "; 

preg_match("/11001600 \[2\]\s+\K[A-Z0-9]{2}\s+[A-Z0-9]{2}/",$string,$matches); 
print_r($matches[0]); 

Ausgang:5C A7

+0

@Andreas Entschuldigung dafür. –