0

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

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

3 回答 3

1

这里的哈希是一个正则表达式分隔符。您几乎可以使用任何东西作为分隔符,例如~,!等。

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

[0-9]+ --- 1 or more numbers in a row
.+     --- any character one or more times in a row
于 2012-11-22T00:49:15.133 回答
1

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

通常/用于:

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

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

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

于 2012-11-22T00:49:25.873 回答
1

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

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

于 2012-11-22T00:51:18.370 回答