正则表达式php的问题

时间:2011-02-03 17:49:49

标签: php regex

/any_string/any_string/any_number

使用这个正则表达式:

/(\w+).(\w+).(\d+)/

它有效,但我需要这个网址:

/specific_string/any_string/any_string/any_number

而且我不知道如何得到它。感谢。

6 个答案:

答案 0 :(得分:1)

/(specific_string).(\w+).(\w+).(\d+)/

虽然请注意,正则表达式中的.技术上与任何字符匹配, 不只是/

/(specific_string)\/(\w+)\/(\w+)\/(\d+)/

这将只匹配斜杠。

答案 1 :(得分:0)

这个匹配第二个网址:

"/(\w+)\/(\w+)\/(\w+)\/(\d+)/"

答案 2 :(得分:0)

/\/specific_string\/(\w+).(\w+).(\d+)/

答案 3 :(得分:0)

只需在regexp中插入specific_string:

/specific_string\/(\w+)/(\w+)/\d+)/

答案 4 :(得分:0)

另一个更改外部分隔符的变体是为了避免无关的转义:

preg_match("#/FIXED_STRING/(\w+)/(\w+)/(\d+)#", $_SERVER["REQUEST_URI"],

答案 5 :(得分:0)

我会用这样的东西:

"/\/specific_string\/([^\/]+)\/([^\/]+)\/(\d+)/"

我使用[^\/]+,因为它会匹配任何不是斜杠的东西。 \w+几乎所有时间都会起作用,但如果某个路径中出现意外字符,这也会有效。另请注意,我的正则表达式需要前导斜杠。

如果您想要更复杂一点,以下正则表达式将匹配您提供的两种模式:

"/^(?:\/specific_string)*\/([^\/]+)\/([^\/]+)\/(\d+)$/"

这将匹配:

"/any_string/any_string/any_number"
"/specific_string/any_string/any_string/any_number"

匹配

"/some_other_string/any_string/any_string/any_number"