我需要正则表达式的帮助。
我有大量不同内容的文本文件。但是每个文件都包含一个十六进制密钥。每个密钥都有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
答案 0 :(得分:3)
以下正则表达式将匹配您的密钥并且不区分大小写
(?:00|01):?[a-fA-F0-9]{32}
这假设OP意味着一个32字符串。如果它是16个字符的字符串,则将{32}更改为{16}。
答案 1 :(得分:2)
0[01][\:\(\)]?([0-9A-F]){16}
没有正则表达式解析器来测试这个,但是应该搜索
答案 2 :(得分:1)
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);
}