Захватывание повторяющейся группы в PHP без пробелаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Захватывание повторяющейся группы в PHP без пробела

Сообщение Anonymous »

Я пытаюсь проанализировать строки по резервуару в PHP, которая всегда имеет этот формат:

Код: Выделить всё

FooBar(,[0-9]{7}[0-9A-F]{8})+
или, другими словами, они имеют начальное значение/слово, за которым следует 1 или несколько записей, каждая запись - одна запятая (), за которыми следуют 7 цифр и 8 символов HexDec (цифры или символы верхнего регистра A до f).

my regex для захвата это/^c7 (, [0-9] {7} [0-9a-f] {8})+$/, какой вид работы. При использовании в preg_match_all он возвращает массив с двумя записями, первая, как и ожидалось, входная строка, однако, во втором массиве есть только одна запись, последний сопоставленный кусок. (см. Пример) < /em> < /p>

Мне нужно применить все куски, сопоставленные группой захвата. Я провел некоторое исследование и нашел этот ответ, который был примерно такой же проблемой: https://stackoverflow.com/a/2205009/2989952, поэтому я скорректировал свою репутацию к/(, [0-9] {7} [0-9a-f] {8})+$/, но я все еще получаю только один матч. Это можно проверить на Regex101.com. I then experimented some more, and found, that if I change the input string, to contain a space (or any not matched character for that matter), between the chunks, like this: C7,22801422CFE0F63 ,2280141C5EF0F63 ,22801402EFD0F63 ,2280138C5ED0F63 ,228024329897530 , 228023829877530 и снова настроить переподключение для/([0-9] {7} [0-9A-F] {8})+/ Это делает именно так, как это предназначено! пробелы между ними? Если так, как? https://regex101.com/r/ilkzjd/1


whitespace/random Cars https://regex101.com/r/mimbgz/1

ogle : поведение второго, одному с пробелами, но не добавляя пробелы (соответственно не совпадающие символы).

edit 2 (hacky relode). /> Я нашел решение, учитывая это https://stackoverflow.com/a/3513858/29899952 Ответ. Regex/(?:,) ([0-9] {7} [0-9a-f] {8})/ работает для меня. https://regex101.com/r/leefzv/1. Как бы я все еще хотел бы, чтобы соответствовать начальному foobar . Как указывает, что входящая строка должна быть совпадает с этим перепонку вообще. 'C7,22801422CFE0F63,2280141C5EF0F63,22801402EFD0F63,2280138C5ED0F63,228024329897530 228023829877530'

Подробнее здесь: https://stackoverflow.com/questions/481 ... whitespace
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»