Php 正则表达式-将特定单词后的4位数字匹配为完全匹配,而不是组
我很难找到一个正则表达式,它将在某个单词完全匹配后提取4位长的数字 全文如下:Php 正则表达式-将特定单词后的4位数字匹配为完全匹配,而不是组,php,regex,extract,Php,Regex,Extract,我很难找到一个正则表达式,它将在某个单词完全匹配后提取4位长的数字 全文如下: FV 7017 FOR SOMETHING 1076,33 USD. 这是我提取4位数字的正则表达式: /FV (\d{4,})/ 这将导致: Full match = `FV 7017` Group 1 match = `7017` 是否可以使用正则表达式排除“FV”字以使结果完全匹配?是的,在PHP中也可以:只需使用所谓的正向查找() /(?4步比正向查找快,即使用\K重新启动完整字符串匹配 /FV \K
FV 7017 FOR SOMETHING 1076,33 USD.
这是我提取4位数字的正则表达式:
/FV (\d{4,})/
这将导致:
Full match = `FV 7017`
Group 1 match = `7017`
是否可以使用正则表达式排除“FV”字以使结果完全匹配?是的,在PHP中也可以:只需使用所谓的正向查找()
/(?4步比正向查找快,即使用\K
重新启动完整字符串匹配
/FV \K\d{4}/
PHP实现:
$string='FV 7017 FOR SOMETHING 1076,33 USD.';
echo preg_match('/FV \K\d{4}/',$string,$out)?$out[0]:'fail';
// output: 7017
您可以在空间上分解并获取分解数组的第二部分为什么不只是访问$matches[1]
?这里有什么问题?您的解决方案按原样工作,无需使用lookarounds使事情复杂化。preg_match始终提供与$matches[0]
中的模式匹配的完整字符串。除非您想移位($matches);
,它将始终处于位置0。重复
$string='FV 7017 FOR SOMETHING 1076,33 USD.';
echo preg_match('/FV \K\d{4}/',$string,$out)?$out[0]:'fail';
// output: 7017