易语言实现正则表达式提取Json数据教程

版权申诉
0 下载量 187 浏览量 更新于2024-11-21 收藏 334B 7Z 举报
资源摘要信息:"易语言是一种简单易学的编程语言,它主要面向中文用户。正则表达式是一种文本处理工具,可以用于模式匹配和文本提取。Json是一种轻量级的数据交换格式,广泛应用于网络数据传输和存储。易语言正则取Json数据源码,就是使用易语言编写的一段代码,用于通过正则表达式从Json数据中提取所需信息。" 易语言是一种以中文为主要编程语言的编程工具,它的语法结构和关键字都采用了中文描述,非常适合没有英文基础的编程初学者学习和使用。易语言的功能强大,支持Windows平台下的各种编程任务,从桌面应用程序到网络服务,都可以使用易语言来实现。 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,每个字母和数字)和特殊字符(称为"元字符")。正则表达式可以用来检查一个字符串是否与某种模式匹配,或者用来从文本中提取符合特定模式的信息。在易语言中,可以使用内置的正则表达式函数来进行文本处理。 Json(JavaScript Object Notation)是一种轻量级的数据交换格式,其语法简洁明了,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的子集,但它是独立于语言的文本格式,现在被广泛用于Web开发中,如数据传输、配置文件、日志记录等。 易语言正则取Json数据源码的主要应用场景是当需要从存储为Json格式的数据中提取信息时。由于Json是一种结构化的数据格式,通过正则表达式可以实现对特定结构的数据进行查找和提取。例如,如果需要从一段Json数据中提取所有的用户信息,可以通过编写相应的正则表达式来匹配“用户信息”相关的字段,并将其提取出来。 使用易语言进行正则取Json数据的操作时,需要掌握几个关键点: 1. Json数据的结构理解,知道如何定位到要提取的数据部分。 2. 正则表达式的编写,能够准确匹配 Json 中的特定字段。 3. 易语言中对应的正则表达式函数使用方法,例如正则表达式匹配、替换、查找等操作。 在实际应用中,可能会遇到Json数据结构复杂或者嵌套的情况,这就需要编写更加复杂的正则表达式来应对。同时,由于正则表达式强大的模式匹配能力,它也可以用来验证Json数据的格式是否正确,或者对Json数据进行格式化处理。 易语言正则取Json数据源码的具体实现会涉及到易语言的内置函数,如“取文本左边”、“取文本右边”、“取文本中间”、“取文本正则表达式匹配”等,这些函数能够帮助编写程序实现对Json数据的解析和提取。 总结来说,易语言正则取Json数据源码的实现是一个综合了易语言编程、正则表达式使用和Json数据解析技术的过程。它不仅需要对易语言有一定的了解,还要对正则表达式的编写规则和Json数据格式有深入的理解。掌握这些知识点,对于处理网络数据、开发相关应用程序都具有重要的意义。
2021-06-25 上传
今天更新一下, 解决之前贴子中提到的一些问题: 1. 封装了几个自定义的函数, 例如 move_to_root, array_get_length, array_move_to_index, 这样可以少调用一些 X64Call; 2. 简单实现了对于类似 [0].A.B[0].C 的路径的解析取值. 接下来说一下遇到的问题和一些体验: 1. 我构造的测试数据大小是大约是 96MB, 在我的机器上可以正常解析, 再大一些(例如 128MB)会崩溃, 崩溃位于 ParsedJson.allocateCapacity , 琢磨了下没琢磨明白 (温馨提示: 真要是这种大小级别了还是建议各位用 SAX 方式); 2. 除了上面这点, 还有个已知的比较隐蔽 BUG, 貌似是 print_ 这个函数的锅: 静态编译之后, 在 demo 中如果 print_ 递归打印了一个 Object 例如 [0], 再点击解析就会在 iterator_free 崩溃. 如果只是取值就不崩溃. 3. 这个库会拷贝数据, 在针对过长的数据的时候这不是好做法, 感觉这个库更像是科研性质, 和那些千锤百炼的老牌库相比, 目前可能只有速度占优势了; 4. 机器或者其它方面的限制, 我用易语言跑不出宣传文章中的千兆字节每秒, 不过几百 MB/s 还是有的; 5. 由于解析的时候它会拷贝数据, 我不清楚有没有可能会产生 64-bit 的内存地址, 暂时就是指针到文本当 32-bit 用, 但心里很没底, 希望 eWOW64Ext 作者有空可以帮忙看一下... @shier2817  谢谢! 6. 库用的是 10.0.17134.0 版本的 SDK /MT 编译的, 但已经无法支持 WindowXP, 低版本的 SDK 编译不过去, 对这些指令不熟悉所以没有去探究原因(也许就是不支持, 详情请翻阅 MSDN); 7. 关于编译模式: 用 MinSizeRel 生成的话, 会导致 double 取值异常, 具体原因未深究, 所以默认使用了 Release . 我将会在附件中附上三种编译模式生成的文件供各位研究: RelWithDebInfo, MinSizeRel, Release; 8. 我对于 WOW64Ext 方面的知识不了解, 所以无法保证代码的稳定性, 抛砖引玉, 所以如果你希望封装完整的模块和工具, 可以进群与我交流.