使用正则表达式或记事本+删除以随机格式结尾的行

时间:2019-03-24 09:09:30

标签: php regex

我有一个带有随机结尾字符串的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

感谢您的帮助。正则表达式让我发疯。

这是用于运行Linux 5,PHP 5和Apache 2的新Linux服务器。

2 个答案:

答案 0 :(得分:1)

这些行似乎以某种哈希结尾,这意味着它只能包含字母af和数字。

要匹配此哈希,可以使用以下正则表达式(它确实包含初始破折号):

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

See here for an demo

匹配要删除的内容后,可以将其替换为PHP preg_replace function

答案 1 :(得分:0)

您可以使用此模式将要保留的分组部分^(.+)(?:-[0-9a-zA-Z]+){5}$

,替换模式为\\\1.html

说明:

^-匹配字符串的开头

(.+)-捕获组:匹配任意一个或多个字符

(?:...)-非捕获组

-[0-9a-zA-Z]+-逐字匹配连字符-,然后匹配任何字母(小写或大写)或任何数字一次或多次

{5}-与(?:-[0-9a-zA-Z]+)完全匹配五次

$-匹配字符串的结尾

替换模式

\\-\

\1-指第一个捕获组

.html-.html

Demo

相关问题