Php 正则表达式-将特定单词后的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

我很难找到一个正则表达式,它将在某个单词完全匹配后提取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\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