如果让 AI 帮忙写正则表达式 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SuperMild
5.49D
V2EX    分享发现

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

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

    看到这个 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 对头
    Chemist
        4
    Chemist  
       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 还是可以,虽然有时候不是那么匹配~
    Chemist
        11
    Chemist  
       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
        span class="no">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
    现在有许多改良正则语法的项目,我觉得那些项目会更可靠,更实用。
    1sen
        32
    1sen  
       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     Solana     1537 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 16:18 PVG 00:18 LAX 09:18 JFK 12:18
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86