PHP Zend测试转储需要帮助理解

时间:2013-06-06 19:43:49

标签: php regex zend-framework preg-match

在以下函数调用之后,$ matches数组包含多少个元素 执行?

this('/ ^(\ d {1,2}([a-z] +))(?:\ s *)\ S +(?= 200 [0-9])/','3月21日 2006',$ match);

一个。 1

B中。 2

℃。 3

d。 4

我知道答案是C.我无法弄清楚你是如何得到他们的。从我能说出来并弄清楚我明白我们如何得到3月21日。我不知道你是如何得到21和st。如果这可以向我解释。

1 个答案:

答案 0 :(得分:2)

'/^(\d{1,2}([a-z]+))(?:\s*)\S+ (?=200[0-9])/'

读为3场比赛。

(\d{1,2}([a-z]+))

是第一个。正则表达式仅返回表达式的第一级,因此它将匹配解析为

(\d{1,2}st)

在你的情况下。

第二和第三是

(?:\s*)

(?=200[0-9])

如果你想得到你的'作为另一场比赛,我想你应该使用

'/^(\d{1,2})([a-z]+)(?:\s*)\S+ (?=200[0-9])/'

作为你的正则表达式