我知道,我知道,現在我有兩個問題,但這裏的正則表達式意味着我不必編寫兩個複雜的循環。相反,我有一個只有我明白的正則表達式,我纔會受僱於yonks。Java replaceAll()&split()違規
我有一個字符串,說stack.overflow.questions[0].answer[1].postDate
,我需要得到[0]和[1],最好在數組中。 「簡單!」我的神經元驚歎,只需在輸入字符串中使用正則表達式和split
方法;所以我想出了這個:
String[] tokens = input.split("[^\\[\\d\\]]");
這將產生以下:
[, , , , , , , , , , , , , , , , [0], , , , , , , [1]]
哦,親愛的。所以,我想, 「你會做replaceAll
在這種情況下?」:
String onlyArrayIndexes = input.replaceAll("[^\\[\\d\\]]", "");
它生產:
[0][1]
嗯。爲什麼這樣?我正在尋找一個包含「[0]」作爲第一個元素和「[1]」作爲第二個元素的雙元素字符串數組。爲什麼Split在這裏不起作用,當Javadoc聲明他們都使用Pattern類時,按照Javadoc?
總之,我有兩個問題:爲什麼用split()
通話產生大陣與看似隨意的空格字符和我是正確的思維中的replaceAll工作,因爲正則表達式替換所有字符不匹配「[」一個數字和「]」?我錯過了什麼,這意味着我期望他們產生類似的輸出(好吧,這是三個,請不要回答這個問題的線索?)。
謝謝,這是事實上,split爲我的正則表達式的每個匹配給了我一個元素;這是我不明白的! – 2010-10-29 08:29:39