正则表达式后匹配任何东西/

时间:2012-08-07 11:33:47

标签: regex wordpress redirect

我基本上不了解有关正则表达式的线索,但我需要一个正则表达式语句,它会识别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中的糖果之后的所有内容来提供帮助,那将非常感激。

2 个答案:

答案 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还是主机名)。如果你愿意的话,你可以在最后省略。*。

如果该模式匹配,只需将整个网址替换为您要重定向到的网址。

相关问题