我有一个数组,看起来是这样的:PHP正则表达式preg_grep
$array[] = 'MT0001ENG Apricot, dried';
$array[] = 'MT0001SYS Prunus armeniaca L.';
$array[] = 'MT0001YLD 0';
$array[] = 'MT0001MGR 06';
$array[] = 'MT0001SGR 20';
$array[] = 'MT0001NCF 6.25';
$array[] = 'MT0001FCF 0.800';
$array[] = 'MT0001000 1159 00050';
$array[] = 'MT0001001 2.9 2.6 3.5 4 05165';
$array[] = 'MT0001002 0.1 0.1 0.1 4 00050';
$array[] = 'MT0003ENG Pineapple, raw';
$array[] = 'MT0003SYS Ananas comosus (L.) Merr.';
$array[] = 'MT0003YLD 47';
$array[] = 'MT0003MGR 06';
$array[] = 'MT0003SGR 40';
$array[] = 'MT0003NCF 6.25';
$array[] = 'MT0003FCF 0.800';
$array[] = 'MT0003000 232 00050';
$array[] = 'MT0003001 0.5 0.5 0.6 4 05165';
$array[] = 'MT0003002 0.1 0.1 0.1 4 00050';
我把所有的线,包含名称,到一个数组名为$名字是这样的:
$names = preg_grep("/ENG/", $array);
但是现在我想将所有包含蛋白质信息的行放入一个名为$ protein的数组中。的蛋白质系的例子是:
$array[] = 'MT0001001 2.9 2.6 3.5 4 05165';
$array[] = 'MT0003001 0.5 0.5 0.6 4 05165';
如u可以看到,有一个图案。所有的行都以MT开头。随后是一个4位数的产品编号。接下来是3个字符,对于蛋白质,这些是001 :)
我试过以下,没有运气!
$proteins = preg_grep("/MT{4}[0-9]001/", $array);
检查我更新的问题:) – mnstrflkrn 2012-04-07 14:55:44
那么你只需要在小数点模式'[0-9]'之后交换'{4}'量词。还要在开始处添加一个锚点'^',因为您应该声明字符串开头。 – mario 2012-04-07 14:57:29
你想要获得哪些数据?例如,在第一个数组项目(MT0001001)中,是否需要2.9或2.6或3.5等? – Odyssey 2012-04-07 14:59:49