@MyQuestion
junior-middle fullstack

Регулярные выражения: как найти слово с начинающееся с цифры?

Добрый день!

Я хочу из названия товара выдернуть его артикул, c помощью preg_replace. У меня артикул может иметь вид 234.37, 235CBF или 79-А01 и т.д. Всегда начинается с цифры. Я пытался написать такую логику:
preg_replace('#(\d.*?\s)#ui', '$1', $product->name);
. Ищем слово, которое начинается с цифры, далее всё что угодно и заканчивается пробелом. Мои варианты не работают, что бы я не пробовал. Как правильно?
С регулярками редко работаю.
  • Вопрос задан
  • 157 просмотров
Решения вопроса 2
dollar
@dollar
Делай добро и бросай его в воду.
Тут разные подходы могут быть.

Можно перечислить все символы в артикле:
\b(\d[\d\w.-]*)
(числа, латинские буквы, дефис, точка)
Если нужны русские, их нужно отдельно вписать по типу А-Яа-я.

Также можно использовать выражение "всё кроме". Например, "кроме пробела":
\b(\d[^ ]*)

В общем виде будет как-то так:
preg_match('/\b(\d[^ ]*)/', $product->name, $matches);
Ответ написан
Stalker_RED
@Stalker_RED
Во-первых, оно работает https://regex101.com/r/7oy7zo/1
Во вторых, возможно заканчивать пробелом - не самая хорошая идея, т.к. вы захватываете лишние пробелы и знаки припинания. Можно конечно потом применить trim(), но почему-бы сразу в регулярке прописать ограничения?
(\d.*?)[,\s] вот так уже не захватываем пробел и запятую.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы