我的代码需要我以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