我的代碼需要我以JSON格式存儲正則表達式字符串。這是在以「/」日期模式用於如何在JSON中存儲正則表達式日期格式
我試着用一個「\」轉義爲大多數模式,但土地麻煩的做工精細
(\\d{1,2}\/\\d{1,2}\/\\d{1,2})
這似乎是工作的罰款,JSONLint確實給任何錯誤
但是,挑戰是當我試圖解析JSON字符串在JAVA程序中它給出的錯誤,因爲它進一步要求'\'和'/'被轉義。我曾嘗試多種選項,但沒有能夠解決
我的代碼需要我以JSON格式存儲正則表達式字符串。這是在以「/」日期模式用於如何在JSON中存儲正則表達式日期格式
我試着用一個「\」轉義爲大多數模式,但土地麻煩的做工精細
(\\d{1,2}\/\\d{1,2}\/\\d{1,2})
這似乎是工作的罰款,JSONLint確實給任何錯誤
但是,挑戰是當我試圖解析JSON字符串在JAVA程序中它給出的錯誤,因爲它進一步要求'\'和'/'被轉義。我曾嘗試多種選項,但沒有能夠解決
我認爲你提出的正則表達式逃逸太多的反斜槓:看一看: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)
如果你有一個像
\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}
終於!謝謝。這工作像一個魅力 – Vivek