正则表达式 - 匹配特定单词后的 4 位数字作为完全匹配而不是组

Regex - matching 4 digits number after certain word as full match not a group

我很难找出正则表达式来提取特定单词后的 4 位长数字作为完全匹配。

正文如下:

FV 7017 FOR SOMETHING 1076,33 USD.

这是我提取 4 位数字的正则表达式:

/FV (\d{4,})/

这将导致:

Full match  = `FV 7017`
Group 1 match = `7017`

是否可以使用正则表达式排除 "FV" 单词以获得完全匹配的结果?

是的,在 PHP 中是可能的:只需使用所谓的正后视 assertion (demo)

/(?<=FV )\d{4,}/

读作"match four or more digits, but only if they're preceded by 'FV ' sequence"。

比正后视快 4 步,是使用 \K 重新启动全字符串匹配。

/FV \K\d{4}/

Pattern Demo

PHP 实施:

$string='FV 7017 FOR SOMETHING 1076,33 USD.';
echo preg_match('/FV \K\d{4}/',$string,$out)?$out[0]:'fail';
// output: 7017