Задать вопрос
tkovacs
@tkovacs
веб мастер

Как найти цену регулярным выражением?

Почему этой конструкцией не могу найти все значения?
Код:
preg_match_all('/(\d{1,3})?[-.,\s]?\d{1,3}[-.,\s]?\d{3}/', $text, $prices);

Значения для поиска:
4600
4 600
5 800
5.800
не находит:
5800000
хотя:
5.800.000 находит.
Если убрать скобки (\d{1,3}), получается что \d{1,3} уже не под вопросом, а обязательны.
preg_match_all('/\d{1,3}?[-.,\s]?\d{1,3}[-.,\s]?\d{3}/', $text, $prices);

Хотел сделать через или
preg_match_all('/\d{7,10}|\d{1,3}?[-.,\s]?\d{1,3}[-.,\s]?\d{3}/', $text, $prices);

Но так на то что до | вообще не реагирует, всегда использует вторую часть.
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
~\d{1,3}?(?:[-.,\s]?\d{3})*~
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev
software engineer
> Как найти цену регулярным выражением?

Если именно по этому вопросу, то почитать чуть глубже как именно работают различные квантификаторы. Собственно только их количество и тип используемых квантификаторов кардинально влияет на цену регулярки, остальные вещи не так сильно.
группы могут влиять, особенно с использованием именных груп, но это больше на память и по сравнению с квантификаторами незаметно будет
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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