是否有可能使正则表达式无效字符(Is it possible to make ineffective

2019-10-21 15:27发布

我试着写wordpress的永久链接漂亮的正则表达式。

我有以下的URL。 我需要2场比赛,

1:之间的最后一个字/和/之前获得/ 2次:字符串,它是用GET / URL的可能是这样的开始

HTTP://本地主机/ Akasia酒店/游艇技术服务/游艇船员/得/ gulets /为/出售/

在这里,我需要“游艇船员”和“获取/ gulets /为/出售/”

HTTP://本地主机/ Akasia酒店/推荐/ GET / motoryachts /为/出售/

在这里我需要“推荐”和获取/ motoryachts /为/出售/

HTTP://本地主机/ Akasia酒店/可/是/地段/的/分隔符/但/ ineed /最后/获得/船/供/租金/

在这里我需要“最后”和获取/船/供/租金/

$url1 = 'somepage/get/gulets/for/sale'; // I need somepage and get/gulets/for/sale
$url2 = 'somepage/subpage/get/motoryachts/for/rent'; // I need subpage and get/motoryachts/for/rent
$url3 = 'may/be/unlimited/directories/but/i/need/here/get/ships/for/sale'; // I need here and get/ships/for/sale
$url4 = 'services/get/gulets/for/sale'; // I need services and get/gulets/for/sale
$regex = '([^\/]+?)\/(get\/.+)';

// I can not change anything below.
preg_match("#^$regex#", $url4, $matches);
echo "<pre>";
print_r($matches);
echo "</pre>"

我赶上$ URL4但不能$为url1,$ URL2,$ URL3

我很感激,如果有人帮助。

Answer 1:

使用\K从在最后打印丢弃先前匹配的字符。

.*(?:\/|^)\K([^\/]+?)\/(get\/.+)

DEMO



文章来源: Is it possible to make ineffective a character in regex