2016-08-11 44 views
0

我有鍵值的列表,例如: -Java的正則表達式提取鍵值不帶引號

{ 
    "xxx" : "1234", 
    "yyy" : "1234", 
    "zzz" : "1234" 
} 

我有一個正則表達式模式: -

String pattern = ".*zzz\\s*:\\s*(.*)[\n\r]"; 

,只有在案件中提取值當關鍵字是'zzz'時的匹配。

但是,由於報價我沒有得到一場比賽......我該如何交替我的模式來獲得比賽?另外,我也不想在我的價值中獲得報價。

+0

看起來no..because下面還有其他的東西,JSON解析器與 – Zavior

+0

下面還有其他一些東西,請確保你使用的任何正則表達式不會從那裏拿東西。如果可能的話,我也推薦使用某種解析器而不是正則表達式,但當然我不知道你的全部情況。 – Philo

+0

如果不會工作,你應該使用JSON庫,而不是正則表達式的在這裏.. – Aarjav

回答

1

由於在zzz之後缺少雙引號,您無法獲得匹配結果。

String pattern = ".*zzz\"\\s*:\\s*(.*)[\n\r]"; 
         ^--- Here 

順便說一句,你可以使用:

String pattern = ".*zzz\".*?\"(.*?)\""; 

然後你有過匹配match(1)搶從捕獲組的內容。

Regex demo

IDE One demo

+0

是的,但我只想要的價值,而不是鍵值對 – Philo

+0

檢查了這一點https://regex101.com/r/gN4oJ8/2 – Philo

+0

@Philo,正則表達式很好,你說的是抓住你捕獲什麼你的捕獲組。你將不得不通過匹配方法'組(1)' –