2016-06-14 328 views
-1

我想用java的string.replaceAll()replaceFirst()方法來編輯從pdf文檔讀取的數據。數據的線可能被返回是:正則表達式,刪除除了數字以外的所有東西

21/1 ** E(6-11)4479 77000327633(U)

我希望只存儲77000327633到一個變量與工作和尋找正確的正則表達式將只捕獲這11位數字。我試圖尋找一個正則表達式,但似乎沒有給我所期望的結果。

+0

的內容取代一切總是結構相同?你到底嘗試了哪種表情?如果可以提供一個匹配數字的表達式,則可以在捕獲組中包裝數字部分,並在'replaceAll()'中使用反向引用。 ' 「yourstring」 .replaceAll( 「前綴(數字)的後綴」, 「$ 1」)'。 – Thomas

+0

如果你知道這個數字總是大約11位數字,你可以簡單地使用這個正則表達式(\ d {5,11}),你可以在這裏測試https://regex101.com/r/kT3rR0/1 –

+1

什麼是規則選擇數字?字符串中的最後一個數字?字符串中最大的數字?任何超過四位數的數字?字符串中的第四個非空格項?什麼? –

回答

0

這是可以做到這樣的:

String value = "21/1**E (6-11) 4479 77000327633 (U)"; 
Pattern pattern = Pattern.compile(".* (\\d{11}) .*"); 
System.out.println(pattern.matcher(value).replaceAll("$1")); 

輸出:

77000327633 

注意:這假定你的號碼有11位數字,前後有空格。

NB2:這並不意味着是完美的它只是顯示這個想法是在這裏定義一個全局模式與組和組

0

這是它:(.*)[ ]([0-9])*[ ](.*)

可以通過訪問你的價值$ 2

+0

看起來像你放錯了量詞。 –

+0

你是什麼意思? – CZ54

相關問題