這是特別針對解析十六進制字節,但這裏有一個更一般的問題。java:使用正則表達式來解析重複的子字符串
假設我有一個正則表達式r
\\s*([0-9A-Fa-f]{2})\\s*
(可選空格,我感興趣的2個十六進制數字以及可選空格)。
如果我想解析字符串s
這個正則表達式這樣的:
如果
s
可以分成塊的串匹配r
,我想要做的事每個塊。 (例如ff 7c 0903 02BB aC
可以用這種方式劃分。)如果
s
不能相應地劃分,我想檢測這個。 (例如00 01 02 hi there ab ff
和9 0 2 1 0
和Y0 DEADBEEF
和cafe BABE!
全部失效。)
我怎麼能做到這一點與Java的正則表達式的設施?
整潔!我最終手動執行了這種方法(檢查前一個結束()與當前的開始()),不知道關於lookAt()。 – 2009-12-30 21:40:39
這是不對的。 'lookingAt()'只匹配Matcher區域的開頭,默認情況下是字符串的開始。你*可以*通過不斷地改變區域的起始邊界來使這種方法工作,但僅僅在正則表達式前加'\ G'並使用'find()'就容易得多。實際上,您的代碼只是在無限循環中將前兩個十六進制數字匹配(如果它匹配任何東西,那就是)。 – 2010-01-02 05:42:03
他是對的。我所做的使用lookAt()用於類似目的的代碼也是每次都將字符串切碎......這是另一種選擇。 myString = myString.substring(lastEnd)幾乎是免費的。我忘了說。 – PSpeed 2010-01-02 10:52:24