2017-01-17 64 views
-1

我的代碼需要我以JSON格式存儲正則表達式字符串。這是在以「/」日期模式用於如何在JSON中存儲正則表達式日期格式

我試着用一個「\」轉義爲大多數模式,但土地麻煩的做工精細

(\\d{1,2}\/\\d{1,2}\/\\d{1,2})這似乎是工作的罰款,JSONLint確實給任何錯誤

但是,挑戰是當我試圖解析JSON字符串在JAVA程序中它給出的錯誤,因爲它進一步要求'\'和'/'被轉義。我曾嘗試多種選項,但沒有能夠解決

回答

1

我認爲你提出的正則表達式逃逸太多的反斜槓:看一看:https://regex101.com/r/xBFeZG/1

這只是需要在Java的正則表達式進行轉義的\,所以轉化你想要的是什麼,我相信會是:

(\\d{1,2}\\/\\d{1,2}\\/\\d{1,4}) 

然而,爲什麼不直接使用標準的日期格式(如:DD/MM/YYYY - >見https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html),並做一些事情,如:

LocalDate.parse(date, DateTimeFormatter.ofPattern(format) 
+0

終於!謝謝。這工作像一個魅力 – Vivek

0

如果你有一個像

\d{1,2}/\d{1,2}/\d{1,4} 

然後導出爲JSON表達式會產生這樣的

{ "regex": "\\d{1,2}\/\\d{1,2}\/\\d{1,4}" } 

與每一個 「\」 轉義爲 「\\」。如果要在Java中正確解析,您實際上只需「逃避」逃逸的反斜槓,換句話說,就是刪除前導反斜槓。像這樣的東西應該工作:

String regex = jsonRegex.replaceAll("\\\\(.)", "$1"); 

編輯:斜槓實際上並不需要進行轉義,雖然他們逃避不傷。所以,這個表達式最有可能會在JSON中發射出來,就像

\\d{1,2}/\\d{1,2}/\\d{1,4} 
+0

我使用SimpleDateFormat轉換爲日期格式,但是需要正則表達式是從隨機文本中識別日期字段 – Vivek

+0

@Vivek太棒了!你的問題雖然是關於從JSON解析正則表達式,而不是如何從組件傳遞日期。所以,我給你一個你的具體問題的答案,你去接受另一個人的無關答案! Oo – vagelis

+0

這個問題是關於當我試圖解析包含日期模式的json時,它不適合我... 我很抱歉,如果它沒有明確出來。儘管感謝你的回答。不幸的是,只能選擇一個答案,這正是我所需要的 – Vivek