我基本上不了解有关正则表达式的线索,但我需要一个正则表达式语句,它会识别URL中/
之后的任何内容。
基本上,我正在为某人开发网站,而网页的网址(课程的本地网址)则为(http://)localhost/sweettemptations/available-sweets
。此页面包含自定义帖子类型(它是一个WordPress网站),其网址为(http://)localhost/sweettemptations/sweets/sweet-name
。
我想要做的是将网址(http://)localhost/sweettemptations/sweets
重定向回(http://)localhost/sweettemptations/available-sweets
,这很容易做到,但我还需要将任何类型的甜蜜重定向回(http://)localhost/sweettemptations/available-sweets
。所以说我需要将(http://)localhost/sweettemptations/sweets/*
重定向回(http://)localhost/sweettemptations/available-sweets
。
如果有人可以通过告诉我如何编写正确的正则表达式语句以匹配URL中的糖果之后的所有内容来提供帮助,那将非常感激。
答案 0 :(得分:1)
使用此正则表达式(?<=://).+
答案 1 :(得分:1)
要做你想要的,你需要使用组。在正则表达式组中,您可以隔离整个匹配的部分内容。
例如:
input string of: aaaaaaaabbbbcccc
regex: a*(b*)
括号在这种情况下标记一个组,它将是组1,因为它是模式中的第一个。
注意:组0是隐式的,是完全匹配。
所以我上面的案例中的匹配将是:
group 0: aaaaaaaabbbb
group 1: bbbb
为了用上面的糖果图案达到你想要的效果,你只需要在最后设置一个组。
possible solution: /sweets/(.*)
在群组之前使用模式的精确度越高,您可能出现误报的可能性就越小。
如果你真正想要的是在最后一个之后匹配任何东西/你可以采取另一种方法:
possible other solution: /([^/]*)
上面的模式会找到/带有一串不是另一个/的字符/并将其保存在第1组中。这里的问题是你可以匹配URL中没有糖果的东西。
注意如果您不介意/在开头那么只需删除(和),您就不必担心组。
我喜欢使用http://regexpal.com/来测试我的正则表达式..它将以不同的颜色标记不同的匹配。
希望这有帮助。
我可能在原帖中误解了你的要求。
如果您只想更改匹配的任何字符串 (HTTP://)本地主机/ sweettemptations /糖果/ *
进入你提供的另一个(没有在最后添加你的*的部分匹配)我会使用正则表达式来匹配URL中的模式但是他们只是盲目地用所需的一个替换整个字符串: (HTTP://)本地主机/ sweettemptations /可供甜食
所以如果你想要URL:
http://localhost/sweettemptations/sweets/somethingmore.html
变成:
http://localhost/sweettemptations/available-sweets
而不是:
localhost/sweettemptations/available-sweets/somethingmore.html
然后解决方案更简单,不需要任何组:)。
执行此操作时,我会确保您与“localhost”部分不匹配。另外我假设(http://)实际上意味着前面的可选http://,因为(http://)不是有效的协议前缀。
所以,如果这是你想要的,那么这应该与模式匹配:
(http://)?[^/]+/sweettemptations/sweets/.*
此正则表达式将与http://部分匹配,可选地与主机匹配(无论是localhost,IP还是主机名)。如果你愿意的话,你可以在最后省略。*。
如果该模式匹配,只需将整个网址替换为您要重定向到的网址。