Задать вопрос
@Quieteroks
php программист

Можно ли повлиять на результат поиска регулярным выражением?

Добрый день.

Задался вопросом, можно ли при выборке каким либо способом повлиять на результат совпадения.

В частности сейчас я пробую сделать такую шутку при парсинге даты:
Имеем на вход: 31.12.17
Желаю получить: 31.12.2017

Пытаюсь понять сам механизм, возможно ли такое. В рамках одного выражения можно использовать различные условия и смотрять вперед и назад, а так же обращаться к какой либо конструкции в рамках выборки. А вот можно ли каким либо образом повлиять/отформатировать, не могу найти.

Исключительно любопытство. Понимаю, что парсинг не является место для подмены, но все же.
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov
Web developer
Имеем на вход: 31.12.17
Желаю получить: 31.12.2017

php.net/manual/en/book.datetime.php

Все остальное в вашем вопросе - какой-то поток сознания. > /dev/null
Ответ написан
Ni55aN
@Ni55aN
А вот можно ли каким либо образом повлиять/отформатировать, не могу найти.

нельзя, регулярки не могут вносить изменения, а только давать что-то на выход (например подстроку, которая выделяется скобками)

/^(\d{1,2}\.\d{1,2}\.)(\d{1,2})$/ заменить на $120$2

так как конкретная среда выполнения не указана, то и реализации могут отличаться, поэтому могу предложить пример на JS (но стоит еще рассмотреть встроенные методы для форматирования даты)

var reg = /^(\d{1,2}\.\d{1,2}\.)(\d{1,2})$/;
var dest = '$120$2';

str.replace(reg,dest) // все вхождения заменяются на то, что найдено в первой скобке (обозначается $1), далее просто "20" и то что во вторых скобках
Ответ написан
Ваш ответ на вопрос

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

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