Created
Sep 13, 2024 12:15 AM
Favorite
Favorite
Priority
备注
推荐
🌟🌟🌟🌟
类型
Python

摘要

  1. jina50行正则的Python实现
  1. 代码迁移任务中ChatGPT的能与不能

介绍

之前给大家介绍过 Jina 的 50 行正则代码,它能够高效地拆分各种文本。
仔细研究这段代码可以发现,其中拆分了标题、代码、应用、表格、段落等各种情况的实现。虽说声称可以拆分任意文本多少有些吹水的成分,实际应用中总归会有处理不好的、混乱的文本结构;但是,在这个正则框架的基础上进行适当修改,以适应实际的业务需求,也是程序员该干的事。毕竟代码都Ctr-C Ctr-V了,轻轻魔改下可不能再麻烦别人。
但在实际使用中,确实还是更希望可以将这段代码移植到Python,不论是调试还是应用都更为方便些。
因此还是决定花点时间,想想办法将代码从 JavaScript 改写成 Python,在这个过程中也好好学习下正则表达式,毕竟次次用次次记不住也挺让人痛苦的。与此同时,现在有ChatGPT作为助手,虽然万事开头难,但架不住GPT可以帮你走完前面的90%,我们也可以更好地行百里。在推进这个迁移任务的同时,也继续体会下GPT的能与不能。

代码迁移

JS代码虽然很长,但是改造成Python需要注意的点也就如下若干条:
  • 替换 \ 为 \(包括\r,\n,\s,\u2026 等等)
  • 改造占位符:{0,${MAX_CODE_LANGUAGE_LENGTH}} → {0,${MAX_CODE_LANGUAGE_LENGTH}}
  • 通过regex支持Emoji_Presentation和Extended_Pictographic
  • ...
按照源代码中的实现顺序,依次给出JS源代码和Python迁移代码,对比如下:

效果对比

以下分别罗列了JavaScript代码和Python代码对官网案例的解析结果,不能说一模一样只能说是分毫不差。
JavaScript实现结果:
notion image
Python实现结果:
notion image

GPT的能与不能

使用体感:
  • 当提出需要将正则表达式从js改写为Python的问题后,gpt可以很好的处理一些通用的表达式差异,例如js中的\r\n替换为\r\n等等,同时可以对原始表达式进行分析,帮助我们理解这段正则实现的基本原理
  • 但是通过GPT翻译过来的代码基本不可直接使用,虽然大体是正确的,但是细节往往有问题:以当前的正则任务为例,复杂的正则表达式里括号位置的不同基本对应不同的功能,而这些细小的差异是GPT所不能捕捉到的,也往往会写错
  • 因此,更建议的使用方式,是通过GPT翻译出草稿,而后对应JS源代码逐一修正,修正过程中可以拆分为多个子part(包括全部的50行正则拆成各个部分,各个部分又进一步拆分为各个子功能)实现,并严格注意括号、方括号、花括号的起始位置是否一一对应(可以通过sublime仔细比对)
  • 多修正几次,其实就可以总结出前述的改造注意事项,再往后的改造其实都不需要GPT介入,直接使用上述修改方案修改,就可以得到最终代码
整体流程:GPT实现 → 人工修正 → 规则总结 → 规则校验

完整代码实现

以上已经罗列了Python正则代码的分段实现,简单拼装一下就是完整代码。
文末赞赏,也会回复完整代码的百度网盘链接,欢迎自取。
日拱一卒2
正则1
Loading...
Alan_Hsu
Alan_Hsu
许心志我在 蓝湛阔天海 中定自主宰
统计
文章数:
176
Latest posts
python中 self cls的区别
2025-1-11
2025_周报 #01
2025-1-5
2024_年终总结: [代码与咖啡]打工人的漂流记
2025-1-4
2024_半年总结_工作篇
2025-1-4
🎄✨ 圣诞特辑 | 美食简餐 🎁🍷
2025-1-3
基于大模型搭建本地私有化知识库的搭建与研究
2025-1-2