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不想替换任何内容,他只想提取原始字符串的一部分。