正则表达式哈希匹配

时间:2012-11-22 00:47:30

标签: php regex

下面的正则表达式从下面的URL中取出数字(公司ID),但我试图找出它是如何工作的。 hash和pluses有什么作用?

preg_match('#/company/([0-9]+)/(.+)#',http://test.net.au/company/198/test,$m);

3 个答案:

答案 0 :(得分:1)

Hash这里是一个正则表达式分隔符。您几乎可以将任何内容用作分隔符,例如~!等。

+是一个量词,表示从1到无穷大的重复。

[0-9]+ --- 1 or more numbers in a row
.+     --- any character one or more times in a row

答案 1 :(得分:1)

正则表达式中的第一个和最后一个字符是分隔符。他们只是说这里是正则表达式开始的地方,这里就是它停止的地方:

通常使用/

Example: "/foo/";
         "#bar#";

在您的示例中,您尝试匹配"/company/",因此分隔符不能是/,因此会使用#

加号+表示匹配前一个条目的1个或多个。在您的情况下,它将匹配一个或多个数字(从0到9)

答案 2 :(得分:1)

哈希仅用作正则表达式模式的边界分隔符。通常,开发人员会使用/~#。在这种情况下,#用于防止需要在正则表达式模式中转义/

+表示必须有一个或多个前面的元素,在第一种情况下实际上是指定所有数字的字符类。在第二种情况下,它只意味着需要有一个或多个任何字符(.是通配符)。