Я пытаюсь разобрать имена продуктов, которые имеют несколько аббревиатур для размеров. Например, среда может бытьРегулярное выражение соответствует слову «1» длиной
m, medium, med
Я попытался простой
preg_match('/m|medium|med/i',$prod_name,$matches);
, который отлично работает для «продукта м АБВ». Однако, когда я пытаюсь «product s/m abc», я получаю ложноположительное совпадение. Я также попытался
preg_match('/\bm\b|\bmedium\b|\bmed\b/i',$prod_name,$matches);
, чтобы заставить его найти в слове, но м с/м по-прежнему совпадают. Я предполагаю, что это связано с тем, что двигатель обрабатывает «/» в названии как разделитель слов?
Итак, чтобы подвести итог, мне нужно совместить 'm' в строке, но не 's/m' или 'small' и т. Д. Любая помощь приветствуется.
Это действительно полезно, только если строка, с которой он работает, не очень динамична. Regex на самом деле не является устойчивым решением, если он ломается каждый раз, когда новый оскорбительный персонаж возвращает свою уродливую голову. –
@BenRoux: Предоставлено. Я предложу альтернативную форму. – Amadan
Малый вопрос о последующих действиях. Кажется, я получаю дубликаты, используя это выражение, используя preg_match (например, result: array ([0] => med [1] => med)). Любые идеи о том, почему? Не проблема, просто попытка улучшить понимание моего регулярного выражения. – Conor