1
39
平衡圆括号实际上是一种无法用正则表达式处理的语言的教科书示例。JSON本质上是平衡的括号加上一堆其他东西,大括号被paren替换。在 hierarchy of formal languages ,JSON是一种上下文无关语言。正则表达式无法分析上下文无关语言。
在专业工作中,您几乎总是使用现有的JSON解析器。如果你想用自己的方式进行教学,那么我建议你从一个简单的算术语法开始,它支持+-*/()。(JSON有一些转义规则,虽然并不复杂,但会使您的第一次尝试比需要的更困难。)基本上,您需要:
下一步是找出在递归解析器中触发堆栈溢出所需的JSON字符串的复杂程度。然后看看其他类型的可以编写的解析器,你就会明白为什么在现实世界中必须解析上下文无关语言的人使用像yacc或antlr这样的工具,而不是手工编写解析器。 如果这比你想要的要多,那么你应该可以随意使用现成的JSON解析器,因为你已经学到了一些重要而有用的东西:正则表达式的限制。 |
2
12
呜呜呜呜。。。 看看这个:
这对我有用 如果要匹配空值,请将最后一个“+”更改为“*” |
3
6
如果您没有使用.NET3.5,您可以使用 Jayrock . |
4
2
此函数实现Lukasz正则表达式。我只将inclide+char添加到值组(因为我使用它来解析live connect身份验证令牌) |
5
0
不管怎样,你为什么要解析JSON呢?有许多库可以为您完成这项工作,而且比您的代码要好得多。当拐角处有一家车轮工厂,门上写着FOSS字样时,为什么要重新发明车轮? |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
Henry · 使用Python将json重新格式化为键值对 2 年前 |
eymentakak · json字典类型错误:字符串索引必须是整数 2 年前 |
Vodka · 如何将单个json对象转换为json数组? 2 年前 |
Alper · 从json转换为数据帧? 2 年前 |