提取字符串的一部分-此正则表达式最佳吗?

时间:2019-05-29 14:09:39

标签: regex

尝试在INF文件中查找DeviceID。

设备ID为:"PCI\VEN_1234&DEV_1a1a&SUBSYS_225617AA&REV_21\3&11583659&1&B0"

.INF文件中没有完整的DeviceID,因此我只需要从字符串中获取VEND_xxxx&DEV_XXXX。

我在做

$id = "PCI\VEN_1234DEV_1a1a&SUBSYS_225617AA&REV_21\3&11583659&1&B0 "
$id -match "VEN_\w{4}&DEV_\w{4}"
$VENDEV = $Matches[0]
$VENDEV

输出:

True
VEN_1234&DEV_1a1a

您认为最佳吗?一切正常,我只是总是好奇地看看别人的做法。

1 个答案:

答案 0 :(得分:-1)

您的表达式应该可以正常工作,我们只需要使用()捕获所需的输出:

.+(VEN_\w{4}&DEV_\w{4}).+

测试

$re = '/.+(VEN_\w{4}&DEV_\w{4}).+/m';
$str = '"PCI\\VEN_1234&DEV_1a1a&SUBSYS_225617AA&REV_21\\3&11583659&1&B0"';
$subst = '$1';

$result = preg_replace($re, $subst, $str);

echo $result;

Demo

RegEx电路

jex.im可视化正则表达式:

enter image description here