我有一个带有随机结尾字符串的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服务器。
答案 0 :(得分:1)
这些行似乎以某种哈希结尾,这意味着它只能包含字母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
function。
答案 1 :(得分:0)
您可以使用此模式将要保留的分组部分^(.+)(?:-[0-9a-zA-Z]+){5}$
,替换模式为\\\1.html
说明:
^
-匹配字符串的开头
(.+)
-捕获组:匹配任意一个或多个字符
(?:...)
-非捕获组
-[0-9a-zA-Z]+
-逐字匹配连字符-
,然后匹配任何字母(小写或大写)或任何数字一次或多次
{5}
-与(?:-[0-9a-zA-Z]+)
完全匹配五次
$
-匹配字符串的结尾
替换模式:
\\
-\
\1
-指第一个捕获组
.html
-.html