Регулярное выражение поиска кода в строке

Регулярное выражение

Имеем строку текста, в ней могут быть даты, цифры и нужный код вида xxx-xxx, его нужно вернуть.

Условие поиска: начинается код с пробела, заканчивается пробелом или концом строки, состоит только из цифр и дефиса. Помогите составить. Спасибо.


Ответы (1 шт):

Автор решения: PotroNik

шаблон поиска:

(?<=\s|^)\d{3}-\d{3}(?=\s|$)

Где:
(?<=\s|^) - позитивный просмотр назад на любой пробельный символ, либо начало строки
\d{3}-\d{3} - три цифры, дефис, три цифры
(?=\s|$) - позитивный просмотр вперед на любой пробельный символ, либо конец строки


Автоматический код созданный на сайте: regexp101

$re = '/(?<=\s|^)\d{3}-\d{3}(?=\s|$)/m';
$str = '123-321
ewq 555-848 dsdw
dww555-555wqqwe
dww555-555 wqqwe
dww 555-555wqqwe
dww 555-555';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);
→ Ссылка