Регулярка - выбрать по шаблону с конца строки

172
16 июня 2017, 10:35

Не получается составить шаблон для последней части строки.

$string = '201706151400_NEW_SIL_db-n8-stanc_DBCollectorConf_HUB_SQL_ST_MSI_VIEW_TEST_dima.gz';
$newstring = preg_replace('/(NEW_|_DBCollectorConf|\.gz)/', '',$string);

Как не пробовал - не могу подобрать шаблон, чтобы попадала еще только последняя часть строки: "_dima". В ней может содержаться цифры или буквы любой длины.

Answer 1

В изначальном варианте '/(NEW_|_DBCollectorConf|\.gz)/ находит следующие подстроки

  • 'NEW_- 'NEW_
  • _DBCollectorConf - _DBCollectorConf
  • \.gz - .gz.

Если нужно оставить всё как есть, и разрешить опциональное совпадение _ + 1 и более символов, отличных от _ перед .gz, нужно использовать

'~NEW_|_IUMCollectorConf|(?:_[^_]+)?\.gz~'
                         ^^^^^^^^^^^

См. демо.

(?:_[^_]+)? является незахватывающей группой ((?:...)?, не создаёт буфера в памяти для части совпадения), которая находит 1 или 0 совпадений _, после которого следует 1 и более символов, отличных от _ ([^_]+).

READ ALSO
Wordpress - Вывести контент страницы single.php

Wordpress - Вывести контент страницы single.php

При создании темы, используется плагин Custom Post Type UI

306
Почему не срабатывает PJAX форма?

Почему не срабатывает PJAX форма?

Первый раз решил применить pjax на сайте, но наткнулся на такую ошибку в консоле:

268
Фатальная ошибка Woocommerce: get_billing_country()

Фатальная ошибка Woocommerce: get_billing_country()

После обновления Wordpress (48) and Woocommerce (3

218
yii2 отображение ошибок валидации формы

yii2 отображение ошибок валидации формы

Задача состоит в том чтоб выводить ошибки валидации в плейсхолдер

265