2017-01-17 28 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