【发布时间】:2022-06-19 16:29:44
【问题描述】:
我目前正在根据https://www.json.org 网站上定义的语法编写自己的 Java JSON 解析器
特别是,'escape' 对象由列表中的任何元素定义:'"'、'\'、'/'、'b'、'f'、'n' , 'r', 't' 或 'u hex hex hex hex'(其中 hex 指任何十六进制数字)
虽然 'character' 由任何字符定义,但以下字符除外:任何 ASCII 控制字符 (0x00-0x1F)、'"'、'\' 或 '\' + escape强>
然后我尝试使用 ["\\/bfnrt]|u[0-9A-Fa-f]{4} 定义 escape 正则表达式,这似乎可以正常工作。
String ESCAPE_REGEXP="[\"\\\\/bfnrt]|u[0-9A-Fa-f]{4}";
但是我找不到如何计算 字符 的正则表达式。我试图将其定义为非字符析取的否定形式: ^([\u0000-\u001f] | [\"\\] | \\("+ESCAPE_REGEX+"))";
但它似乎不起作用。我还想知道是否可以计算多个否定正则表达式的合取(逻辑与)?
感谢您的帮助:)
【问题讨论】: