Есть строки:
128
129
129а
12А
12Вк1
12а
12к0стр0
Нужно получить где только цифры либо цифры и в конце одна буква.
С регулярными значениями не знаком, помогите пожалуйста.
Пробовал писать
if (preg_match("/^[(0-9){0,3}+(а-я{0,1})]+$/", $home["name"])).
Но это не так работает.
И пробовал /^\d+|\d+[а-я]?/
тогда все строки пропускает
/^\d+[а-яА-Я]?$/
^
- начало строки\d+
- одна или больше цифр[а-яА-Я]?
- не более одной русской буквы$
- конец строкиhttps://regex101.com/r/LcSuLt/1
Пробовал писать if (preg_match("/^[(0-9){0,3}+(а-я{0,1})]+$/", $home["name"]))
Но это не так работает
Во первых, если вам нужно найти более одного соответствия, то вместо preg_match()
надо использовать preg_match_all()
(глобальный поиск)
Во вторых, если искомые значения находятся на разных строках, а в качестве ограничителей вы используете ^
и $
, то нужно в конец шаблона добавлять модификатор m
В третьих, внутри квадратных скобок символьного класса [...]
действуют особые правила, одно из них говорит о том, что почти все метасимволы становятся литералами.
Один из вариантов решения выглядит так:
$str = '128 129 129а 12А 12Вк1 12а 12к0стр0';
preg_match_all('~\b\d+\pL?\b~iu', $str, $arr);
var_dump($arr);
В результате вы получите набор значений:
array (size=1)
0 =>
array (size=5)
0 => string '128' (length=3)
1 => string '129' (length=3)
2 => string '129а' (length=5)
3 => string '12А' (length=4)
4 => string '12а' (length=4)
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть примитивное консольное приложение c++, мне нужно сделать так, чтобы был отдельный конфигурационный файл в котором будут храниться...
Я хочу перенаправить поток ввода обратно в консольВ Windows можно так: