下面的正则表达式从下面的 URL 中取出数字(公司 ID),但我试图找出它是如何工作的。hash to 和 pluses 有什么作用?
preg_match('#/company/([0-9]+)/(.+)#',http://test.net.au/company/198/test,$m);
这里的哈希是一个正则表达式分隔符。您几乎可以使用任何东西作为分隔符,例如~
,!
等。
+
是一个量词,表示从 1 到无穷大的重复。
[0-9]+ --- 1 or more numbers in a row
.+ --- any character one or more times in a row
正则表达式中的第一个和最后一个字符是分隔符。他们只是说这里是正则表达式开始的地方,这里是它停止的地方:
通常/
用于:
Example: "/foo/";
"#bar#";
在您的示例中,您正在尝试匹配,因此"/company/"
不能使用分隔符。/
#
加号+
表示匹配上一个条目的 1 个或多个。在您的情况下,这意味着它将匹配一个或多个数字(从 0 到 9)
散列仅用作正则表达式模式的边界分隔符。开发人员通常为此使用/
, ~
, 或#
。在这种情况下#
,用于防止需要转义/
正则表达式模式中的 's。
+
表示必须有一个或多个前面的元素,在第一种情况下,它实际上是一个指定所有数字的字符类。在第二种情况下,它只是意味着需要一个或多个任意字符(.
是通配符)。