Я хочу немного узнать о регулярных выражениях. У меня есть строка, которая представляет идентификационный номер транспортного средства (VIN) в шестнадцатеричном коде.Регулярное выражение для конкретного шаблона 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 байтов в результате?
Да, это теоретически возможно, но я бы так не сделал. Во-первых, потому что мы говорим о байтах, который на самом деле не является текстом и поэтому будет сложным для соответствия с использованием регулярного выражения, которое ориентировано на текст (с возможной поддержкой локали). Протокол UDS, который вам нужно проанализировать, будет, скорее всего, проще проанализировать с использованием обычного анализатора или даже с использованием уже существующих библиотек. – Cilyan
Итак, вы хотите одно регулярное выражение для всех форматов VIN? – pacholik
Не поймите меня неправильно - мне уже удалось получить данные - меня просто интересует, можно ли получить его через регулярное выражение. Спасибо @Cilyan за указание на это. – Fr3ak1n0ut