2016-12-13 3 views
1

Вот пример снабжать струной, тетивой и т.п. Выберите каждую группу два формата letter ш после строки

00 00 00 12 A0 F5 CD 02 28 10

И выделены те группы, чтобы соответствовать: F5CD022810

Я пытался с этим

(?<=12.*)\w{2} 

но, похоже, недействителен.

+0

Итак, вы хотите, чтобы получить '' A0', F5' и т.д. в виде отдельных матчей после '12' значения? Что такое аромат регулярного выражения? PCRE, .NET? '(? <= 12. *)' Бесконечная ширина lookbehind поддерживается только в .NET regex (и еще в трех других версиях). –

+0

Это текстовый редактор Sublime Text 3. Это то, что я нашел «механизм обратного отслеживания без обратного отслеживания только для подсветки синтаксиса» здесь: Hairi

+1

В Sublime S & R вы можете использовать '(?: \ G (?! \ A) | \ b12 \ b) \ s * \ K [A-Z0-9] +'. –

ответ

2

Вы можете использовать

(?:\G(?!\A)|\b12\b)\s*\K[A-Z0-9]+ 

Смотрите regex demo

Детали:

  • (?:\G(?!\A)|\b12\b) - сопрягать конец предыдущего успешного матча () или (|) целое слово 12 (\b12\b)
  • \s* - 0+ пробельные символы
  • \K - опустить текст, совпадающий до сих пор
  • [A-Z0-9]+ - 1 или более заглавных букв или цифр.

enter image description here

1

Должностные языки не поддерживают внешний вид переменной длины. Если вы хотите 6 байт после 12, то вы можете сделать:

12 \K(?[0-9A-F]{2}){6} 

Пример here.

1

Я не уверен, я понимаю, но если вы хотите, чтобы пропустить первые 12 символов, и соответствовать всем \ ш \ ш после:

(^.{12})((?:(?:\w\w) ?)*) 

Группа 1 являются пропущенными символами. Группа 2 - это информация, которую вы хотите.

Here - пример.

EDIT: Мое замешательство возникло из-за того, что после 12 символов появилось 12.

this работать лучше?

12 ?((?:(?:\w\w) ?)*) 
1

(?<!00)(?:\s)\K[A-Z0-9]{2}

Вы можете попробовать и этот простой.

Код:

<?php 

$string="00 00 00 12 A0 F5 CD 02 28 10"; 
preg_match_all('/(?<!00)(?:\s)\K[A-Z0-9]{2}/', $string,$matches); 
print_r($matches); 

Выход:

Array 
(
    [0] => Array 
     (
      [0] => A0 
      [1] => F5 
      [2] => CD 
      [3] => 02 
      [4] => 28 
      [5] => 10 
     ) 

)