Удалите строки, заканчивающиеся в случайном формате с помощью регулярных выражений или блокнота + - PullRequest
0 голосов
/ 24 марта 2019

У меня есть список URL со случайным окончанием строки, как это:

paris-chambre-double-classique-avec-option-petit-dejeuner-a-lhotel-trianon-rive-gauche-4-pour-2-personnes-8ae0676c-aba2-4cf2-9391-91096a247672
paris-chambre-double-standard-avec-petit-dejeuner-et-acces-spa-pour-2-personnes-a-lhotel-le-mareuil-4-f707b0fe-31cb-4507-b7b3-7b91695bff9c
villes-deurope-visite-des-plus-grands-monuments-et-acces-aux-activites-etou-transport-avec-un-pass-par-destination-6a04659b-62c4-4995-9d0f-5e473df520cd

paris-chambre-doubletriplequadruple-confort-avec-petit-dejeuner-a-lhotel-de-france-gare-de-lyon-pour-2-a-4-pers-404f5780-9818-4599-af6b-be53b85a8185
paris-chambre-double-standard-avec-pdj-et-croisiere-sur-la-seine-en-option-a-lhotel-prince-albert-lyon-bercy-pour-2-33d0b087-5701-4199-9d9c-147cca687263.html

Теперь я пытаюсь несколько дней с регулярным выражением, чтобы преобразовать эту строку в:

/paris-chambre-double-classique-avec-option-petit-dejeuner-a-lhotel-trianon-rive-gauche-4-pour-2-personnes-8ae0676c-aba2-4cf2-9391-91096a247672

/paris-chambre-double-standard-avec-petit-dejeuner-et-acces-spa-pour-2-personnes-a-lhotel-le-mareuil-4-f707b0fe-31cb-4507-b7b3-7b91695bff9c
villes-deurope-visite-des-plus-grands-monuments-et-acces-aux-activites-etou-transport-avec-un-pass-par-destination-6a04659b-62c4-4995-9d0f-5e473df520cd.html

/paris-chambre-doubletriplequadruple-confort-avec-petit-dejeuner-a-lhotel-de-france-gare-de-lyon-pour-2-a-4-pers-404f5780-9818-4599-af6b-be53b85a8185
paris-chambre-double-standard-avec-pdj-et-croisiere-sur-la-seine-en-option-a-lhotel-prince-albert-lyon-bercy-pour-2-33d0b087-5701-4199-9d9c-147cca687263.html

Проблема в случайной строке:

3d0b087-5701-4199-9d9c-147cca687263
33d0b087-5701-4199-9d9c-147cca687263

Мне нужно удалить эту часть, не имея последней - и добавить .html: и добавить / beforeurl так:

/paris-chambre-doubletriplequadruple-confort-avec-petit-dejeuner-a-lhotel-de-france-gare-de-lyon-pour-2-a-4-pers.html

paris-chambre-double-standard-avec-pdj-et-croisiere-sur-la-seine-en-option-a-lhotel-prince-albert-lyon-bercy-pour-2.html

Спасибо затвоя помощь.Regex сводит меня с ума.

Это для нового сервера Linux, работающего на MySQL 5, PHP 5 и Apache 2.

Ответы [ 2 ]

1 голос
/ 24 марта 2019

Строки, кажется, заканчиваются каким-то хэшем, что означает, что он может содержать только буквы a до f и цифры.

Чтобы соответствовать этому хэшу, вы можете использовать следующее регулярное выражение (он включает в себя начальную черту):

\-[0-9a-f]{8}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{12}

См. здесь демонстрацию

После того, как вы сопоставили то, что хотите удалить, вы можете заменить его наPHP preg_replace функция .

0 голосов
/ 24 марта 2019

Вы можете использовать этот шаблон для записи в групповую часть, которую хотите сохранить ^(.+)(?:-[0-9a-zA-Z]+){5}$

, и заменить шаблон на \\\1.html

Объяснение:

^- соответствует началу строки

(.+) - группа захвата: соответствует одному или нескольким любым символам

(?:...) - группа без захвата

-[0-9a-zA-Z]+ -буквально соответствует дефису -, затем любая буква (строчная или прописная) или любая цифра один или несколько раз

{5} - совпадение (?:-[0-9a-zA-Z]+) ровно пять раз

$ - совпадениеконец строки

Заменить шаблон :

\\ - \ буквально

\1 - относится к первой группе захвата

.html - .html буквально

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...