特定VIN模式的正则表达式

时间:2015-11-11 13:26:08

标签: python regex python-2.7 hex obd-ii

我想了解一下正则表达式。我有一个字符串,用十六进制代码表示车辆识别号(VIN)。

问题是,该字符串将具有不同的模式,具体取决于我用来获取它的汽车。

第一种模式如下(空格和换行仅用于提高可见度):

49 02 01 00 00 00 xx
49 02 02 xx xx xx xx
49 02 03 xx xx xx xx
49 02 04 xx xx xx xx
49 02 05 xx xx xx xx

其中xx是包含数据的字节。如您所见,数据由17个字符组成。

汽车可能返回的第二种模式如下(仅为了更好的可见性,空格和换行符):

014
0: 49 02 01 xx xx xx
1: xx xx xx xx xx xx xx
2: xx xx xx xx xx xx xx

其中xx是包含数据的字节。如您所见,数据也包含17个字符。

我只想阅读xx部分,并将结果连接到我将用str.decode("hex")解码的字符串以获取我的VIN。

所以,我的问题是:是否可以将所有这些包装在正则表达式中以获得最终的17个字节作为结果?

1 个答案:

答案 0 :(得分:-2)

如果我错过了什么,请纠正我。

我的理解是,您的字符串为490201000000xx490202xxxxxxxx490203xxxxxxxx490204xxxxxxxx490205xxxxxxxx,并且您想要提取' x'从它的立场来看。

我编写了一个可以在Javascript中处理的小代码。

对于第二种情况,您可以删除前6个字符吗?

var a = '490201000000xx490202xxxxxxxx490203xxxxxxxx490204xxxxxxxx490205xxxxxxxx';
var reg = /.{12}(.{2}).{6}(.{8}).{6}(.{8}).{6}(.{8})/g;
var b = reg.exec(a);
var c = b.splice(1, 4);
var d = c.join(''); // d = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'