出于某种原因,我的正则表达式与我追求的和额外的相匹配。我需要匹配group #
,但它也匹配第一个电话号码。
示例数据:
id: N group: 1 category: NAMES : Mike
id: N group: 2 category: NAMES : Seth
id: # group: 1 category: PHONE : 123-456-789
id: # group: 2 category: PHONE : 111 111-1111
id: @ group: 1 category: EMAIL : mike@mail.com
id: @ group: 2 category: EMAIL : seth@yahoo.com
正则表达式
preg_match_all('/:\s+\d/', $data, $matches);
当前输出
1
2
1
1
2
1
1
2
预期输出
1
2
1
2
1
2
答案 0 :(得分:3)
通过
更改正则表达式"/group:\s*(\d+)/i"
问题是您在PHONE和EMAIL之后还有“:”
答案 1 :(得分:1)
你可以做一个预测,以确保category
立即跟随:
preg_match_all('/:\s+\d(?= category)/', $data, $matches);
没有捕捉前瞻,但如果不存在则字符串不会匹配。
答案 2 :(得分:1)