2017-05-30 44 views
0

我有這樣的輸出與命令:如何在我的情況下使用preg_match?

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

以相同的順序,每次它不是,它可以是:

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

「5C A7」。
我這樣做:

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

但它給我0,這意味着它不會發現。我該怎麼做 ?

+0

你缺少有關PCRE的一些基本概念,順應[手動](http://php.net/manual/en/book.pcre。 php)並閱讀模式 – hassan

+1

@Zekeriya看看你以前的問題,你似乎是那些永遠不會接受答案的人之一。下面的答案都能滿足你的需求。也許你只是需要幫助。在這裏閱讀如何和爲什麼接受答案https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Andreas

回答

1

你快到了。
[是一個正則表達式字符,需要轉義才能在正則表達式中用作字符串。

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

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

EDIT:忘記了()

+0

你可以在這裏看到代碼在行動https://3v4l.org/N9D4L – Andreas

1

Try this code snippet here

正則表達式:11001600 \[2\]\s+\K[A-Z0-9]{2}\s+[A-Z0-9]{2}

1.11001600 \[2\]\s+\K這將匹配11001600 [2]\K將重置當前匹配。

2.[A-Z0-9]{2}\s+[A-Z0-9]{2}將匹配A-Z0-9{2}是兩次。

<?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]); 

輸出:5C A7

+0

@Andreas對不起。 –

相關問題