正则表达式 - 匹配特定单词后的 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}/
PHP 实施:
$string='FV 7017 FOR SOMETHING 1076,33 USD.';
echo preg_match('/FV \K\d{4}/',$string,$out)?$out[0]:'fail';
// output: 7017
我很难找出正则表达式来提取特定单词后的 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}/
PHP 实施:
$string='FV 7017 FOR SOMETHING 1076,33 USD.';
echo preg_match('/FV \K\d{4}/',$string,$out)?$out[0]:'fail';
// output: 7017