我在Java中使用正則表達式時遇到了一些問題。我試圖通過一個ISO文件進行搜索,並且如果有任何JPG文件,就可以分割出任何JPG文件。關於JPG雕刻的Java正則表達式
目前,我在用JPG內定位EXIF信息,使用下面的正則表達式成功:
Pattern imageRegex = Pattern.compile("\\x45\\x78\\x69\\x66"); //Exif regex
這工作得很好,然後我可以將文件能開出的EXIF信息。
但是,如果我用這個正則表達式:
Pattern imageRegex = Pattern.compile("\\xff\\xd8\\xff"); //JPG header regex
的Java未能找到任何匹配。我可以確認ISO文件中有JPG文件。
我正在讀200字節的文件在一個字節數組,然後將其轉換爲一個字符串是正則表達式。
任何人都可以建議爲什麼會發生這種情況,因爲它相當混亂。
或者任何人都可以建議一個更好的方法來解決在Java中使用正則表達式來處理JPG文件的問題嗎?
任何意見將不勝感激。
感謝您的信息。 我明白現在如何匹配exif數據,因爲它是所有有效的ascii字符。 我無法理解的是如何使用一個字節[]或類似的匹配一個JPG頭,而不是簡單地匹配一系列的字節。 我看了一下fileinputstream API,但我仍然有點困惑。 你可以提供一個更好的解決方案如何匹配字節? 我不是在找你,只是給我答案,但我是新來的,我越來越快越來越困惑。 謝謝 – user848044
最簡單的方法就是循環尋找0xff的字節數組 - 當你找到一個時,檢查它是否後面跟着0xd8和0xff。有很多方法可以優化這個過程(比如Boyer-Moore算法),但簡單的方法對於初學者來說可以很好地工作。 – duskwuff