V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SuperMild
V2EX  ›  分享发现

如果让 AI 帮忙写正则表达式

  •  
  •   SuperMild · 2022-07-09 16:44:44 +08:00 · 5314 次点击
    这是一个创建于 868 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到这个 https://www.autoregex.xyz

    突然想到,如果能让 AI 帮忙写正则,会是一件非常有意义的事情。

    第 1 条附言  ·  2022-07-09 17:20:47 +08:00
    毕竟正则本来就不太适合人脑去处理,多数人在写正则时感到痛苦。另外可能 AI 帮忙写 CSS 也很有意义。
    35 条回复    2022-07-12 16:30:44 +08:00
    Donahue
        1
    Donahue  
       2022-07-09 17:12:50 +08:00
    很强
    churchmice
        2
    churchmice  
       2022-07-09 17:23:20 +08:00   ❤️ 4
    基本是脱裤子放屁
    woqujjfly
        3
    woqujjfly  
       2022-07-09 17:26:25 +08:00
    @churchmice 对头
    kyuuseiryuu
        4
    kyuuseiryuu  
       2022-07-09 17:27:32 +08:00 via iPhone   ❤️ 3
    你需要很懂正则才能教 ai 正则。
    但当你很懂正则,你就不需要 ai 帮你写正则。
    你要用正则帮你过滤数据?那不如直接教 ai 怎么识别数据……
    Chell
        5
    Chell  
       2022-07-09 17:37:50 +08:00
    用自然语言描述就会丧失精确性,CSS 也是一样,都让自然语言说完了为啥不直接用符号表达。。顶多适用于一些 toy projects
    Jooooooooo
        6
    Jooooooooo  
       2022-07-09 17:38:54 +08:00
    稍微用了下挺有意思, 收藏了
    dreasky
        7
    dreasky  
       2022-07-09 17:39:21 +08:00
    直接用 AI 去匹配想要的字符串不就得了
    SuperMild
        8
    SuperMild  
    OP
       2022-07-09 17:49:31 +08:00   ❤️ 3
    @kyuuseiryuu 如果有一个很懂正则的人教会 AI 呢?然后其他不熟悉正则的人就可以直接拿来用了。
    crayygy
        9
    crayygy  
       2022-07-09 17:53:36 +08:00
    当你描述正则规则的时候,正则就已经写完了啊,剩下的就只是怎么优化和精简
    licoycn
        10
    licoycn  
       2022-07-09 17:59:55 +08:00
    这方面 github copilot 还是可以,虽然有时候不是那么匹配~
    kyuuseiryuu
        11
    kyuuseiryuu  
       2022-07-09 18:02:18 +08:00 via iPhone
    @SuperMild ai 错了怎么排错呢?还得用的人懂
    lovepplforever
        12
    lovepplforever  
       2022-07-09 18:03:28 +08:00
    用 copilot ,很强
    SuperMild
        13
    SuperMild  
    OP
       2022-07-09 18:10:34 +08:00
    @kyuuseiryuu 验证正则,用单元测试比用人脑运算更合理吧,平时一般人如果不经常写正则,写完总得喂一些用例测试一下才放心。
    Lykr
        14
    Lykr  
       2022-07-09 19:32:05 +08:00
    随便写了几个表达式, 还挺准确的

    但是一些用来提取信息的正则感觉不好描述
    fox0001
        15
    fox0001  
       2022-07-09 19:47:04 +08:00 via Android
    其实,如果不懂正则表达式,或者正则表达式太复杂而看不懂,是不是应该考虑使用其它更容易理解的方式去实现?主要考虑到日后需求变化,要改这个正则表达式。
    future0906
        16
    future0906  
       2022-07-09 20:30:43 +08:00   ❤️ 1
    本末倒置的一件事,本来正则就是一种 DSL 用来描述匹配过程的规则。如果自然语言能描述匹配过程的话,就没正则什么事了。
    SuperMild
        17
    SuperMild  
    OP
       2022-07-09 20:36:31 +08:00
    @future0906 感觉很多人有这方面的误会。

    不是用自然语言来描述匹配过程,而是 AI 根据自然语言猜测人类的意图,然后 AI 写正则。

    有点类似于程序员根据 “用户用人类语言提的需求”,然后人类写正则。

    是 AI 在一定程度上取代人类,而非用人类语言取代正则。
    LeeReamond
        18
    LeeReamond  
       2022-07-09 20:45:35 +08:00
    可能有用,相当于百度青春版吧。。没用的地方是因为普适性差,如果遇到写不出的正则,那么大概率使用自然语言描述该有限状态机也是非常困难的事,恐怕得写一大堆说明,还得加几个例子。
    andyJado
        19
    andyJado  
       2022-07-09 20:55:37 +08:00
    swift WWDC22 发布了人话版 Regex

    值得一试!
    future0906
        20
    future0906  
       2022-07-09 21:00:36 +08:00
    @SuperMild

    没区别,正则描述的匹配过程,就是状态机。
    所谓的: “ AI 根据自然语言猜测人类的意图,然后 AI 写正则”。这种想法多少有点 AI 文科的意思了。

    正则本身的基础规则也很容易理解,麻烦的是不同正则引擎之间的拓展规则。有时间琢磨 AI 生成正则还不如像刚才说的另辟蹊径去处理字符串匹配。
    yfugibr
        21
    yfugibr  
       2022-07-09 21:48:37 +08:00 via Android
    感觉不太现实,你要通过喂数据让 AI 写个验证手机号(包括号段)的正则,那你就得把所有号段的数据都给一些,同时还要用某种方式让 AI 理解,某些数字每列出来的
    yfugibr
        22
    yfugibr  
       2022-07-09 21:54:31 +08:00 via Android
    @yfugibr #21 补:某些没列出来的数字组合是不合法
    所以肯定不能直接喂数据,得告诉他规则(哪些号段可以有,后八位只用限制数字等等),但是有时间把这些规则捋清告诉他,你直接就用正则写出来了
    akira
        23
    akira  
       2022-07-09 22:08:50 +08:00
    写个中国身份证的正则校验, 这样的估计还更简单点
    dji38838c
        24
    dji38838c  
       2022-07-09 22:24:27 +08:00   ❤️ 1
    已经有了:
    AutoRegex: English to RegEx with Natural Language Processing
    https://www.autoregex.xyz/
    tinybvjk
        25
    tinybvjk  
       2022-07-09 23:04:18 +08:00 via iPhone
    谢谢分享,很有趣的想法。

    对于开发者来说,要想把正则表达式写好写对是一件非常困难的事情,一旦写不对还可能会造成巨大的损失。

    但是现在的算法并不能准确理解人类的自然语言,也就不能准确转换。不过 AI 可以作为一种辅助工具,降低写正则的难度。还可以作为一种学习工具,学习正则的使用方法。
    MMMMMMMMMMMMMMMM
        26
    MMMMMMMMMMMMMMMM  
       2022-07-10 02:10:37 +08:00
    copylot 写个注释有时候真能蹦出自己要的正则
    lovestudykid
        27
    lovestudykid  
       2022-07-10 05:33:07 +08:00   ❤️ 1
    @dji38838c 这么多人只看标题的
    skmO
        28
    skmO  
       2022-07-10 09:25:07 +08:00
    很需要,很有用,每次都得查半天
    herozzm
        29
    herozzm  
       2022-07-10 12:03:57 +08:00
    说清楚比自己写更难
    PeacePeach
        30
    PeacePeach  
       2022-07-10 16:04:54 +08:00
    收藏了,好东西
    kkocdko
        31
    kkocdko  
       2022-07-10 20:55:19 +08:00
    现在有许多改良正则语法的项目,我觉得那些项目会更可靠,更实用。
    weivi
        32
    weivi  
       2022-07-11 14:06:40 +08:00
    有点意思,收藏了,感谢分享
    zglzy
        33
    zglzy  
       2022-07-12 11:01:53 +08:00 via Android
    @kkocdko 比如这样的项目吗?:https://github.com/yoav-lavi/melody
    devwolf
        34
    devwolf  
       2022-07-12 16:27:03 +08:00
    感谢安利,这个网站结合
    devwolf
        35
    devwolf  
       2022-07-12 16:30:44 +08:00   ❤️ 1
    补充#34 感谢安利,这个网站结合 https://regex101.com/https://deerchao.cn/tutorials/regex/regex.htm 对于我这种用到必看手册的正则菜鸟来说相当便利。比如我输入“nine digits or nine chinese characters” 能让我知道中文字符对应的正则是

    [\d]{9}|[\u4e00-\u9fa5]{9}


    ( orz 第一次知道 ctrl + enter 也能快捷回复,没打完)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1227 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:15 · PVG 02:15 · LAX 10:15 · JFK 13:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.