数据:
今天13/9 :阿里斯蒂德,阿里斯蒂德,阿里斯提迪斯,科尼利奥斯,科尼利奥斯,科涅莉亚(资料来源: www.namedays.gr)
Regex模式:
/(?: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
)我的问题是,为什么我的模式不以名称-> Array1返回,为什么在我的结果数组中也包括非捕获组?
我搞不懂。我只期待Array1。
发布于 2012-09-13 07:04:24
0th捕获组总是包含整个匹配的文本。第一个捕获组总是$1 (或命名的)。
如果这是一个问题,你可以随时unset()它。
发布于 2012-09-13 07:06:39
一切都是正确的。第0组总是整个比赛,不管是哪组,第一组是第一组的结果。
例如,见匹配医生,
如果提供匹配,则会填充搜索结果。$matches将包含匹配完整模式的文本,$matches1将包含匹配第一个捕获的括号大小子模式的文本,依此类推。
https://stackoverflow.com/questions/12401048
复制相似问题