.NET: Найти шестнадцатеричные строки с регулярными выражениями - PullRequest
1 голос
/ 29 апреля 2009

Мне нужна помощь с регулярным выражением.

У меня очень большая коллекция текстовых файлов с различным содержанием. Но каждый файл содержит один шестнадцатеричный ключ. Каждый ключ имеет ровно 16 шестнадцатеричных цифр ("E4 34 F1 FB...") и всегда начинается с "00" или "01". В некоторых случаях они имеют один символ-разделитель (":").

Вот несколько примеров ключей:

00:C461F0538ECC84F1AF43DBBDC49E5DA3
00:F4F599D15353650F1566CFEB5CB891C1
011EC3991261BFD8D74BBCFE1E3108628C
003E05F7730347E43437F1FBCAB3A8B461
018FAE7FFB2DBB64F646F705525DEB25F8
00)339EDE5269DD018C2FD5338AD18C3A2F
00B8491FDF00C618A155350F47349E7B04

Как извлечь эти ключи из строк с помощью регулярного выражения в .NET (VB.NET или C #)?

Вот пара строк для тестирования:

KAJSDF00ASLJKHFLAKJSDHFLAK01JSH00:C461F0538ECC84F1AF43DBBDC49E5DA3DFLKJAHSDFJAVHBEVBERJHVBQEJHRVBQJERBV
JKLABDVJ01KBQLKJFBVQLEJKRBVL00:F4F599D15353650F1566CFEB5CB891C1QERBVJHQEBRVJHQBERFVHBQERVJHBQEJH
RVBQJHERVBJHQBRVJHQEBRVJHWEBRV011EC3991261BFD8D74BBCFE1E3108628CWKBERVJHWERFGUQHERULIFHQW
EIFH2FPO00I134FWFQWHEF34HFQREW018FAE7FFB2DBB64F646F705525DEB25F8F2347YQ3EFQO84R93U48UY8RTU13
R1R0100910R14UYR891UYFR1UEF98U1FPH00)339EDE5269DD018C2FD5338AD18C3A2F138294FH190324FU134UF19834YF

Ответы [ 3 ]

3 голосов
/ 29 апреля 2009

Следующее регулярное выражение будет соответствовать вашим ключам и нечувствительно к регистру

(?:00|01):?[a-fA-F0-9]{32}

Предполагается, что ОП означало строку из 32 символов. Если предполагается, что это строка из 16 символов, измените {32} на {16}.

2 голосов
/ 29 апреля 2009
0[01][\:\(\)]?([0-9A-F]){16}

У меня нет парсера регулярных выражений для проверки этого, но он должен искать

  • 0,
  • с последующим 0 или 1,
  • с последующим возможным (но не обязательным) появлением ':', '(' или ')'
  • , за которыми следуют 16 последовательных символов с возможными значениями (0123456789ABCDEF)
1 голос
/ 29 апреля 2009
    string data = @"KAJSDF00ASLJKHFLAKJSDHFLAK01JSH00:C461F0538ECC84F1AF43DBBDC49E5DA3DFLKJAHSDFJAVHBEVBERJHVBQEJHRVBQJERBVJKLABDVJ01KBQLKJFBVQLEJKRBVL00:F4F599D15353650F1566CFEB5CB891C1QERBVJHQEBRVJHQBERFVHBQERVJHBQEJHRVBQJHERVBJHQBRVJHQEBRVJHWEBRV011EC3991261BFD8D74BBCFE1E3108628CWKBERVJHWERFGUQHERULIFHQWEIFH2FPO00I134FWFQWHEF34HFQREW018FAE7FFB2DBB64F646F705525DEB25F8F2347YQ3EFQO84R93U48UY8RTU13R1R0100910R14UYR891UYFR1UEF98U1FPH00)339EDE5269DD018C2FD5338AD18C3A2F138294F";
    for (Match match = Regex.Match(data, "0[01]:?[0-9A-F]{16}"); match.Success; match = match.NextMatch()) {
        Console.WriteLine(match.Value);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...