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

译文 精选
人工智能
本文从正则表达式的生成原理说起,介绍了两款可供免费使用的AI生成工具。

译者 | 陈峻

审校 | 重楼

不知你是否听说过由人工智能(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
相关推荐

2012-04-28 15:22:46

PHP

2010-03-25 18:25:36

Python正则表达式

2009-09-16 17:29:30

正则表达式使用详解

2018-09-27 15:25:08

正则表达式前端

2023-10-07 08:25:09

Java处理工具正则表达式

2024-12-25 15:09:38

Python字符串函数

2020-09-04 09:16:04

Python正则表达式虚拟机

2012-05-08 13:29:01

VB

2021-05-25 09:18:04

正则表达式Linux字符串

2024-09-14 09:18:14

Python正则表达式

2018-04-21 07:11:53

正则表达式Python函数

2010-07-14 09:47:04

Perl正则表达式

2017-05-12 10:47:45

Linux正则表达式程序基础

2022-03-28 06:19:14

正则表达式开发

2009-09-16 18:19:34

正则表达式组

2021-01-27 11:34:19

Python正则表达式字符串

2011-06-02 12:34:16

正则表达式

2009-02-18 09:48:20

正则表达式Java教程

2019-07-17 15:45:47

正则表达式字符串前端

2022-01-04 11:35:03

Linux Shel正则表达式Linux
点赞
收藏

51CTO技术栈公众号