2013-03-16 86 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

相關問題