Регулярное выражение, для удаления всего, кроме даты
Есть набор строк, где помимо даты еще накидано всякого мусора. На пример
- 01.03.2017 (some garbage № BP-26/17
-
21.12.2017 info
и т.д. Строка не всегда начинается с даты. Там могут быть табы, пробелы, перевод стоки, неразделяющий пробел и т.д Надо удалить все, кроме даты. Саму дату выловить нетрудно: (\d{2}.\d{2}.\d{4}). А как сделать отрицание не для набора символов, а для шаблона?
Ответы (2 шт):
Автор решения: Jug-IT
→ Ссылка
Решение задачи средствами php:
<?php
$str = " 10.12.2017 info";
if (preg_match("/^[\D]*\d{2}.\d{2}.\d{4}/", $str)) {
echo "Вхождение найдено.";
} else {
echo "Вхождение не найдено.";
}
?>
Автор решения: edem
→ Ссылка
В perl можно использовать s///:
perl -E '$str=" 21.12.2017 info"; $str=~s/.*(\d{2}\.\d{2}.\d{4}).*/$1/; say $str'
21.12.2017