2013-03-16 152 views
0

我曾尝试创建一个正则表达式来做到这一点,但老实说,我的脑海里现在是如此的b that以至于我必须要求帮助......这可能对未来也是如此。正则表达式:匹配十六进制/键字符串

我有以下输入模板:

06-6A-BF-05-AF-84-DF-A4-23-7C-BE-B4-6C-95-D7 
JK1T-XTSRV-2HC4D-RP4S7-ZMKRG 

我需要从一个输入字符串挑选出喜欢这两个字符串。输入字符串可能看起来像这样:

JK1T-XTSRV-2HC4D-RP4S7-ZMKRG 
FDGF-A1S0M-5M8XJ-T08WC-BCZSJ 
C6-6C-1C-17-B7-EE-BE-EA-E3-7C-EF-23-6C-12-F1 
asdf234 ,f C6-324_EE 

在这种情况下,以下将返回:

JK1T-XTSRV-2HC4D-RP4S7-ZMKRG, FDGF-A1S0M-5M8XJ-T08WC-BCZSJ, C6-6C-1C-17-B7-EE-BE-EA-E3-7C-EF-23-6C-12-F1 

因此,正则表达式需要有以下限制匹配的字符串:

  • 15 2字符(数字或字母)对由-
  • 5四个字符(数字或莱特分离RS)对通过-

分开什么的正则表达式匹配这些?

+0

前两个输入字符串的实例是既不十六进制字符串,也不匹配文本描述“5四字符双[原文如此]分离由'-' “ – 2013-03-16 07:15:36

+0

你提到的第一个字符串似乎是'hex',而另一个不是?你真的关心每个2或4个字符文本是否为十六进制值? – Tuxdude 2013-03-16 07:19:30

+0

@JanDvorak编辑:)对不起。 – 2013-03-16 07:27:19

回答

1

您应该使用两个正则表达式:

(\w{2}-){14}\w{2} 
\w{4}-(\w{5}-){3}\w{5} 

第二种类型实际上是四位一体的炭和四五字符。

测试1: http://fiddle.re/h3ve6

试验2: http://fiddle.re/3a5e6

+0

当然,我可以做两个...谢谢...也对不起,搞乱了限制,我很累:) – 2013-03-16 07:26:37

+0

看起来,第二个是匹配两个例子FDGF-A1S0M-5M8XJ-T08WC -BCZSJ - 与FDGF-A1S0M-5M8XJ-T08WC-BCZSJ和T08WC- – 2013-03-16 08:50:04

+0

相匹配很抱歉,我确实说过我没有测试过第二个,有人编辑我的答案以删除那个位! ;)让我看看...... – James 2013-03-16 08:53:06

相关问题