我写了一个正则表达式,我在rubular.com中测试过,它返回了4个匹配项。测试的主题可以在这里找到http://pastebin.com/49ERrzJN和PHP代码如下。由于某些原因,PHP代码只返回前两个匹配项。如何使它匹配所有4?这似乎与贪婪等有关。PHP preg_match_all问题
$file = file_get_contents('x.txt');
preg_match_all('~[0-9]+\s+(((?!\d{7,}).){2,20})\s{2,30}(((?!\d{7,}).){2,30})\s+([0-9]+)-([0-9]+)-([0-9]+)\s+(F|M)\s+(.{3,25})\s+(((?!\d{7,}).){2,50})~', $file, $m, PREG_SET_ORDER);
foreach($m as $v) echo 'S: '. $v[1]. '; N: '. $v[3]. '; D:'. $v[7]. '<br>';
你究竟想要提取什么? – Druzion
Ruby Ruby不是rubular.com吗? – Laurel
@Druzion:姓名,出生日期,性别最重要 – pedmillon