Соответствие с помощью регулярных выражений

«День»: 8-10 июня, «Местоположение»: США, «Город»: Нью-Йорк

Мне нужно соответствовать 3 матча:

8-10 июня

НАС

Нью-Йорк

-5

Решение

Согласно моему комментарию выше, если это JSON, вам определенно следует использовать эти функции, так как они больше подходят для этого.

Тем не менее, вы можете использовать следующий REGEX.

/:([a-zA-Z0-9\s-]*)/g

<?php
preg_match('/:([a-zA-Z0-9\s-]*)/', '"Day":June 8-10-2012,"Location":US,"City":Newyork', $matches);
print_r($matches);

Демонстрация регулярных выражений здесь:

https://regex101.com/r/BbwVQ5/1

0

Другие решения

Вот несколько простых способов:

Код: (демонстрация)

$string='"Day":June 8-10-2012,"Location":US,"City":Newyork';

var_export(preg_match_all('/:\K[^,]+/',$string,$out)?$out[0]:'fail');

echo "\n\n";

var_export(preg_split('/,?"[^"]+":/',$string,NULL,PREG_SPLIT_NO_EMPTY));

Выход:

array (
0 => 'June 8-10-2012',
1 => 'US',
2 => 'Newyork',
)

array (
0 => 'June 8-10-2012',
1 => 'US',
2 => 'Newyork',
)

Образец № 1 Демо \K возобновляет матч после : так что можно избежать положительного взгляда (сохранение «шагов» / повышение эффективности шаблона). Путем сопоставления всех следующих символов, которые не являются запятыми, можно избежать группы захвата (сохранение «шагов» / повышение эффективности шаблона).

Скороговорка №2 Демо ,? делает запятую необязательной и определяет первый «ключ» в двойных кавычках для сопоставления (разделение на). Целевая подстрока для разделения будет соответствовать полной «ключевой» подстроке и заканчивается на следующем : двоеточие.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector