Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用正则表达式获取数字的第5个实例_Php_Regex - Fatal编程技术网

Php 使用正则表达式获取数字的第5个实例

Php 使用正则表达式获取数字的第5个实例,php,regex,Php,Regex,我有一个如下的数字201106260157.png,我想得到前四个数字,然后是前四个之后的第二个两个 我得到前四个是下面的表达式 preg_match('/^\d{4}/', $file, $matches); // result 2011 我怎样才能得到下两个数字(06)?在前四个之后,我刚刚使用正则表达式进行了匹配 如有任何帮助,请使用捕获组 preg_match('/^(\d{4})(\d{2})/', $file, $matches); 由此,从组索引1中获取前四位数字,从组

我有一个如下的数字
201106260157.png
,我想得到前四个数字,然后是前四个之后的第二个两个

我得到前四个是下面的表达式

preg_match('/^\d{4}/', $file, $matches);    // result 2011 
我怎样才能得到下两个数字(06)?在前四个之后,我刚刚使用正则表达式进行了匹配

如有任何帮助,请使用捕获组

preg_match('/^(\d{4})(\d{2})/', $file, $matches);
由此,从组索引1中获取前四位数字,从组索引2中获取后两位数字

使用preg_match_all

preg_match_all('~^\d{4}|(?<=^\d{4})\d{2}~', $file, $matches);

preg_match_all('~^\d{4}}|)(?为每个零件使用捕获组:

preg_match('/^(\d{4})(\d{2})/', $file, $matches);
$matches[1]
包含前4个数字,
$matches[2]
包含后2个数字


您也可以使用
substr()
,但它不会检查字符是否为数字,您必须在获取子字符串后进行检查。

与初始问题没有直接关系,因为OP似乎在询问PHP,但是
sed(1)
有一种更好的方法。注意:
echo 1234567 | sed的/[0-9]/*/5'
。我看不出这如何解决同样的问题。这将替换regexp的第5个匹配项。OP不想替换任何内容,他只想提取原始字符串的一部分。