数据:
今天13/9:Aristides,Aristeides,Aristeidis,Kornelios,Kornilios,Kornelia(来源:www.namedays.gr)
正则表达式:
/(?:today \d{1,2}\/\d{1,2}\s\:\s)([\w[:blank:],]+)(?:\s\(source\s\:\swww\.namedays\.gr\))/
结果:
Array
(
[0] => today 13/9 : Aristides, Aristeides, Aristeidis, Kornelios, Kornilios, Kornelia (source : www.namedays.gr)
[1] => Aristides, Aristeides, Aristeidis, Kornelios, Kornilios, Kornelia
)
我的问题是,为什么我的模式不仅仅返回名称 - >数组[1]以及为什么在我的结果数组[0]中包含非捕获组呢?
我无法理解。我只期待Array [1]。
答案 0 :(得分:3)
第0
个捕获组始终包含整个匹配的文本。第一个捕获组始终是$1
(或命名)。
如果这是一个问题,您可以随时unset()
。
答案 1 :(得分:1)
一切都是正确的。无论组如何,第0组始终是整个匹配,第1组是第一个捕获组结果。
例如,请参阅preg_match doc,
如果提供了匹配,那么它将填充搜索结果。 $ matches [0]将包含与完整模式匹配的文本,$ matches [1]将具有与第一个捕获的带括号的子模式匹配的文本,依此类推。