文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用AI帮助开发者处理正则表达式

2024-11-29 20:58

关注

审校 | 重楼

不知你是否听说过由人工智能(AI)来生成正则表达式(Regex)。这是一个有趣的领域,鉴于人工智能在文本分析方面优异的表现,它们足以开始“整理”各种现有表达式工具了。

作为开发人员,我们可能更希望将人工智能作为开发系统的一部分,从日常自己的工作流中提取信息,生成表达式,而不是停留在被动地接受由OpenAI等公司提供的所谓以用户为中心的平台方案的层面上。下面,我将从正则表达式的生成原理说起,向你介绍两款可供免费使用的此类工具。

表达式生成原理

让我们从一个简单的伦敦旅行问题开始:“请问,从WalthamstowPimlico的最佳旅行方式是什么?”对此,ChatGPT能够轻松地从该问句中提取起点和终点,并给出如下图所示的答复:

该问题并不难回答。如果你愿意,还可以通过一问一答的方式,获取更多的最新信息。上述问例的核心在于,算法准确地捕捉了“从(from)”和“到(to)”之间的文本,进而可以生产一个如下简单的正则表达式案例,即:

/from ([A-Z][a-z]*) to ([A-Z][a-z]*)/

如下图所示,通过访问www.regex101.com,我们可以看到其详细的过程:

从下面整理的信息中,我们可以看出,两个“捕获组(capture group)”都成功捕捉到了起点和终点信息:

因此,假设我们需要获取一个与上面类似的正则表达式,便可以借助人工智能工具来实现。总体而言,我们需要人工智能能够做到:

  1. 主要目的是能够生成正确的正则表达式,然后将其应用到自己的程序代码中。
  2. 利用人工智能的优势,理解句子中的情感表达,并通过起点和终点等关键字,来确认正在寻找的方向。
  3. 用户可以在处理代码的同时,快速领悟正则表达式的语法。
  4. 根据人工智能给出的多种不同的正则表达式方式,针对实际问题,选取最优解。

Regex.ai

如果你持续关注正则表达式领域的话,也许会和我一样,首先想到的是Regex.ai网站。该网站的使用方式既有趣又简单:你只需创建一个短语,并加入需要被提取的单词,那么该网站就会生成各种候选的正则表达式。让我们以上述旅行为例往下看:

如你所见,网站上的人工智能已按要求提取了起点和终点。

在此基础上,我按下“运行(run)”按钮,等待几秒钟后,便得到以下信息:

在上面的截图中,你可以看到有四个不同的代理进行了四次不同的尝试。其正则表达式位于每一列的上方,对应的结果位于下方。如你所见,只有一列提取到了正确的回复(即:代理B的两组捕获是正确的)。接着,在我点击代理B的结果后,将会出现如下内容:

由上面的截图可知,人工智能确实已正确地理解了问句的意思(尽管它可能还没有完全理解提问者强调的是起点和终点)。

从技术上讲,由于它使用了单词边界(如:开头的\b)和空白匹配器(\s),而不仅仅是空格,因此其结果比较清晰可读。同时,考虑到真实地名单词可能存在不仅仅出现首字母为大写的情况,因此相较于[A-Z][a-z]+,它使用了更为合理的[A-Z][a-z]*

RegExGPT.app

Regex.ai不同,网站RegExGPT.app并不会去捕获各种词组,而且采取如下图所示的另一种方法:

通过在指定的问题区域内,使用英语来询问提问者希望提供什么,该网站会给出创意性的组合。不仅如此,它还为我们提供了一套可行的正则表达式代码段,而且其效果还不错:

如上图所示,首先,为了理解上下文,它会将输出函数命名为“extractRoute”。

接着,它会对所提供的正则表达式进行全面解释(请参阅下图):

而且,它甚至还会给出一个如何在JavaScript中使用的示例:

虽然上述正则表达式本身有些复杂,但是它能够完整地解释其推理过程。其中,括号用于捕获,且被正则表达式赋予了优先权,而(?: ) 在此表示为非捕获组(non-capturing group)。非捕获组可用于完成前者“from”的捕获,而无需为后者“to”产生开销。

总的说来,虽然表达式(\w+(?:\s\w+)*)看起来比较复杂,但是其作用足以捕捉到包含了多个关键字(multi-word)的表达式,且不会弄错捕捉组。如下图所示,假设我们必须从Green Park出发,而不是从Walthamstow出发:

显然,地名Green Park中的空格并没有造成任何问题,而其他生成工具则不然。

目前,我仅发现了上述这两款可供免费使用的人工智能工具,能够生成满足用户不同场景需求的正则表达式。如果你有更好的AI工具值得推荐,不妨分享给我吧!

译者介绍

陈峻(Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。

原文Using AI to Help Developers Work with Regular Expressions,作者:David Eastman

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯