2017-05-30 10 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

、[手動]に行く(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} 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]); 

出力:あなたはPCREに関するいくつかの基本的な概念が欠落している5C A7

+0

@アンドレアスそれを申し訳ありません。 –

関連する問題