下面的正则表达式从下面的URL中取出数字(公司ID),但我试图找出它是如何工作的。 hash和pluses有什么作用?
preg_match('#/company/([0-9]+)/(.+)#',http://test.net.au/company/198/test,$m);
答案 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)
哈希仅用作正则表达式模式的边界分隔符。通常,开发人员会使用/
,~
或#
。在这种情况下,#
用于防止需要在正则表达式模式中转义/
。
+
表示必须有一个或多个前面的元素,在第一种情况下实际上是指定所有数字的字符类。在第二种情况下,它只意味着需要有一个或多个任何字符(.
是通配符)。