我的代码要求我在JSON中存储正则表达式字符串。这对大多数模式都很好,但是当使用带有'/'的日期模式时会遇到麻烦
我尝试使用'\'
进行转义 (\\d{1,2}\/\\d{1,2}\/\\d{1,2})
这似乎工作正常,因为JSONLint确实给出了任何错误
答案 0 :(得分: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)
答案 1 :(得分:0)
如果你有一个像
这样的表达式\d{1,2}/\d{1,2}/\d{1,4}
然后将其导出为JSON将生成类似这样的内容
{ "regex": "\\d{1,2}\/\\d{1,2}\/\\d{1,4}" }
与每个" \"被转义为" \\"。
要在Java中正确解析,你真的只需要" un-escape"转义反斜杠,换句话说,删除前导反斜杠。这样的事情应该有效:
String regex = jsonRegex.replaceAll("\\\\(.)", "$1");
编辑:转发斜线实际上并不需要转义,虽然逃避它们并不会受到伤害。因此,表达式很可能以JSON格式发出,如
\\d{1,2}/\\d{1,2}/\\d{1,4}