V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
snoopy1024
V2EX  ›  程序员

世界上为什么会有正则表达式这么反人类的玩意儿?

  •  
  •   snoopy1024 · 2019-03-04 16:36:08 +08:00 via Android · 23581 次点击
    这是一个创建于 2120 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果不是必须用,尽量不用这玩意儿… 学也不想学,学了后又忘得快。 今天有个需求要写正则,吐槽一下…

    第 1 条附言  ·  2019-03-05 12:21:05 +08:00
    😂😂 我快被你们喷死了, 需求解决了,正则的确是最简洁和高效率的办法。之前硬着头皮认真学过,只是平时没咋用,很容易遗忘,每次看别人写的简直头大,感谢楼下大佬们提供的工具。
    170 条回复    2019-03-06 10:26:01 +08:00
    1  2  
    old9
        101
    old9  
       2019-03-04 21:02:41 +08:00 via Android   ❤️ 7
    正则表达式是个投入很小回报很大的工具,这样的工具可不多,楼主要珍惜。
    northernlights
        102
    northernlights  
       2019-03-04 21:03:43 +08:00
    这么好用的东西怎么反人类了??只是回头去读有点费劲而已,但是写着、用着都很爽啊
    ahonn
        103
    ahonn  
       2019-03-04 21:12:18 +08:00
    那么好用,那里反人类了?
    xxgirl2
        104
    xxgirl2  
       2019-03-04 21:25:32 +08:00   ❤️ 1
    写的时候加两行注释写两个匹配实例就行了,也方便别人读懂
    luoleng
        105
    luoleng  
       2019-03-04 21:29:53 +08:00   ❤️ 2
    我觉得正则表达式挺好用的呀~嗯、果然,不是人人都想能像我一样年纪轻轻就精通了正则。。哈哈哈哈……
    Semidio
        106
    Semidio  
       2019-03-04 22:08:06 +08:00
    读正则可以用各种工具,比如 https://regex101.com/
    sampeng
        107
    sampeng  
       2019-03-04 22:44:55 +08:00 via iPhone
    现在是能写正则不写 if ………多简洁啊…真正的简单可依赖
    mokain
        108
    mokain  
       2019-03-04 22:53:24 +08:00
    正则一点不反人类吧,理解规则特别好记住!而且特别喜欢这种小巧又强大的工具
    srx1982
        109
    srx1982  
       2019-03-04 23:13:03 +08:00
    现在你有一个问题
    你选择用正则表达式来解决
    现在你有两个问题了
    via
        110
    via  
       2019-03-04 23:27:03 +08:00 via iPhone
    正则一时爽,维护火葬场
    Beebird
        111
    Beebird  
       2019-03-04 23:34:12 +08:00 via Android
    正则应该算一项了不起的发明才对。
    bakabie
        112
    bakabie  
       2019-03-04 23:35:18 +08:00 via Android
    除了读不懂之外,写的时候特别好用
    ps1aniuge
        113
    ps1aniuge  
       2019-03-04 23:54:18 +08:00
    华山玉女峰惨案---气剑之争,脚本界反正则之辩!
    http://bbs.chinaunix.net/thread-4297525-1-1.html
    909076350
        114
    909076350  
       2019-03-04 23:56:42 +08:00
    正则表达式很好用的 用来过滤数据 方便快捷
    但是个人觉得可读性差
    至于忘记了 如果常用的话 写下笔记 常用的符号和函数也就那几个
    ffffffff8
        115
    ffffffff8  
       2019-03-04 23:59:46 +08:00
    说出心声了。
    autoxbc
        116
    autoxbc  
       2019-03-05 00:02:20 +08:00 via iPhone
    正则就是精炼的程序,编程的规范在正则里都应该遵守

    比如可维护,不好读的正则不如不写;
    比如语义清晰,看不出语义的应该有注释;
    比如不要炫技,要考虑合作者的技能等级
    ngg0707
        117
    ngg0707  
       2019-03-05 00:02:54 +08:00
    程序错误吧,维基百科里“程序错误”=bug
    jim9606
        118
    jim9606  
       2019-03-05 00:14:45 +08:00
    你要知道如果你不用正则,那个匹配逻辑你要写多少行,写那玩意虽然直观一些但很无聊的。
    通常是出现上下文相关语法时正则会比较难看,这时考虑用条件判断拆分成多个正则表达式就好看了。
    dd0754
        119
    dd0754  
       2019-03-05 00:22:50 +08:00 via iPhone
    这么好用怎么会是反人类?
    yanaraika
        120
    yanaraika  
       2019-03-05 01:38:25 +08:00 via Android
    只要没有大量前向反向引用就用正则,否则写代码 parse
    dangyuluo
        121
    dangyuluo  
       2019-03-05 05:21:28 +08:00
    这东西属于学习曲线很陡,但是学会了用处很大的一类工具
    1a0ma0
        122
    1a0ma0  
       2019-03-05 07:00:34 +08:00 via iPhone
    写还好,读就痛苦了。即使是自己写的。
    AX5N
        123
    AX5N  
       2019-03-05 07:24:09 +08:00
    干嘛要读正则,难道你还要去改吗?都是直接写注释,要改直接重新写了。
    Trumeet
        124
    Trumeet  
       2019-03-05 07:40:37 +08:00
    同。
    Imr
        125
    Imr  
       2019-03-05 08:05:20 +08:00 via iPhone
    做运维可不这么想,正则对于文本处理简直是太基础的东西,没觉着用和读有啥难度,而且没有正则,logstash 怎么用
    koebehshian
        126
    koebehshian  
       2019-03-05 08:14:09 +08:00
    我也觉得反人类,一般程序语言,标识符之间是可以加空格的,而正则表达式空格都没法加,就直接一坨,只有使用有语法高亮的编辑器时读起来稍微好一点。
    lengyihan
        127
    lengyihan  
       2019-03-05 08:19:29 +08:00 via Android
    你说得对。😁😂😂😂
    maxxfire
        128
    maxxfire  
       2019-03-05 08:19:44 +08:00
    等你学会了,你会说“真香”
    zmlu
        129
    zmlu  
       2019-03-05 08:21:01 +08:00
    可以把一行正则换成无数个 if else
    focusheart
        130
    focusheart  
       2019-03-05 08:24:29 +08:00
    除了正则,还有什么更好的选择?

    换工种
    fortunezhang
        131
    fortunezhang  
       2019-03-05 08:25:33 +08:00
    当你有一个很困难的问题时,你用正则解决了他。好了,现在你有两个困难的问题了。 我记得是来自某本关于测试的书里面。
    DOLLOR
        132
    DOLLOR  
       2019-03-05 08:57:05 +08:00
    主要是缺少优秀的可视化工具吧
    julyclyde
        133
    julyclyde  
       2019-03-05 09:28:54 +08:00
    因为这东西设计出来就是给机器看效率优化的
    从设计之初就没考虑给人看
    Felldeadbird
        134
    Felldeadbird  
       2019-03-05 09:30:44 +08:00
    不过换一个语言写的时候,没有找到好用的库,正则是最好的道具吧。
    898601566
        135
    898601566  
       2019-03-05 09:30:57 +08:00
    学习任何新知识不用都会忘吧
    wly19960911
        136
    wly19960911  
       2019-03-05 09:34:15 +08:00
    正则很爽啊,写起来没什么大问题,经常用于搜索替换里面,因为我前端文本处理很少。
    lixuedong
        137
    lixuedong  
       2019-03-05 09:41:46 +08:00
    @zhuangzhuang1988 Linux 是自己的 ,Windows 是微软的
    mengzhuo
        138
    mengzhuo  
       2019-03-05 09:47:12 +08:00
    LZ 10 分钟入门的东西。
    学会了绝对会是
    真香.jpg
    inhzus
        139
    inhzus  
       2019-03-05 09:56:27 +08:00 via Android
    没有正则表达式、自动机这些东西,说得夸张点你我现在都在写汇编代码
    dingyaguang117
        140
    dingyaguang117  
       2019-03-05 09:59:13 +08:00
    我以为是广告贴,LZ 发明了什么不得了的神工具呢。
    maplerecall
        141
    maplerecall  
       2019-03-05 10:03:11 +08:00 via Android
    正则对于特征字符串检测非常的简单好用啊,入门到上手也就十分钟吧,理解了根本不会忘,平时最多查几个转义符而已……
    newtype0092
        142
    newtype0092  
       2019-03-05 10:08:35 +08:00
    @wenzhoou 试了下工程里几个又臭又长的,这个是真的好用😄
    lib360
        143
    lib360  
       2019-03-05 10:24:05 +08:00
    经常用,好使
    SakuraKuma
        144
    SakuraKuma  
       2019-03-05 10:39:41 +08:00
    坐等真香。。
    正则拯救一大堆重复工作 /代码。。
    ARhen
        145
    ARhen  
       2019-03-05 11:02:24 +08:00
    自己写的正则还好,读别人的正则真的痛苦。尤其是长的,看到就头疼
    syG6WNaS
        146
    syG6WNaS  
       2019-03-05 11:07:01 +08:00
    真香。
    anonymous256
        147
    anonymous256  
       2019-03-05 11:30:20 +08:00   ❤️ 3
    没正则日子没法过, 等你需要文本处理就知道了. 写句正则就能解决问题, 多舒服. 至于正则需要记忆? 不用, 忘了就忘了吧. 大不了写的时候, 查下正则的速查表, 不到 3 分钟就想出来了. 分享一个正则的速查表: https://www.jb51.net/shouce/jquery1.82/regexp.html

    @ARhen #145 读别人的正则推荐用这个在线的可视化工具 https://regexper.com/
    passerbytiny
        148
    passerbytiny  
       2019-03-05 11:44:49 +08:00
    没有正则表达式,你准备怎么看日志,总不至于是个系统就上日志分析系统吧。
    Krime
        149
    Krime  
       2019-03-05 12:08:44 +08:00
    好用啊。
    虽然真的不好读。
    sdlearn
        150
    sdlearn  
       2019-03-05 13:41:36 +08:00 via Android
    正则是四两拨千斤的好东西
    ARhen
        151
    ARhen  
       2019-03-05 14:08:13 +08:00
    @anonymous256 好滴 感谢分享
    不过我日常写正则是匹配 html,会把 html 标签放进去
    DefoliationM
        152
    DefoliationM  
       2019-03-05 14:10:35 +08:00 via Android
    反人类还行 这么好用的东西竟然反人类
    baiban
        153
    baiban  
       2019-03-05 14:41:14 +08:00
    正则虽然特别难理解,而且还都标准不统一。但是没有正则,匹配文字更麻烦。
    Bakumon
        154
    Bakumon  
       2019-03-05 14:52:20 +08:00
    同感
    xuanwu
        155
    xuanwu  
       2019-03-05 15:06:15 +08:00
    有没有可以生成正则但改进了可读性的 DSL 呢?
    leexy
        156
    leexy  
       2019-03-05 15:07:13 +08:00
    帮你上热门
    talen666
        157
    talen666  
       2019-03-05 15:25:57 +08:00
    主要是记不住,每次写都要看文档
    cw2k13as
        158
    cw2k13as  
       2019-03-05 15:53:53 +08:00
    简直就是神器
    feelinglucky
        159
    feelinglucky  
       2019-03-05 15:54:36 +08:00
    面试的时候问正则其实比问算法要实用得多
    BruceAuyeung
        160
    BruceAuyeung  
       2019-03-05 16:02:23 +08:00 via Android
    正则的缺点有 1)可读性差 2)性能差,比如实现同样的功能,直接用 java if/else 比 java 正则性能好上一个数量级。优点:表现力丰富,简约
    civet
        161
    civet  
       2019-03-05 16:47:09 +08:00
    Heanes
        162
    Heanes  
       2019-03-05 17:49:05 +08:00
    正则学起来来,但是就是好用
    sc13
        163
    sc13  
       2019-03-05 19:22:00 +08:00 via Android
    自己写挺好用的,看别人写的就觉得反人类
    cpdyj0
        164
    cpdyj0  
       2019-03-05 19:25:05 +08:00
    除了不方便阅读,倒是挺好用的,手写 parser 好累啊,正则投入小,回报大,就是别人看不懂
    Hopetree
        165
    Hopetree  
       2019-03-05 22:14:54 +08:00
    求求楼主,千万不要学
    beingWH
        166
    beingWH  
       2019-03-06 08:16:26 +08:00
    你有一个问题
    你打算用正则
    好了,现在你有两个问题
    guanhui07
        167
    guanhui07  
       2019-03-06 08:41:16 +08:00
    真香
    ijustdo
        168
    ijustdo  
       2019-03-06 08:58:50 +08:00
    你会发现你无论那个语言都离不开正则
    基本现在的编辑器都支持正则吧
    darknoll
        169
    darknoll  
       2019-03-06 09:16:33 +08:00
    形式语言与自动机这门课,上学时候考了 90 分
    musi
        170
    musi  
       2019-03-06 10:26:01 +08:00
    挺好用的啊,就是别人给我发了一串代码看了半天没看懂,然后问他在干嘛,之后就重写了一句
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3130 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 00:44 · PVG 08:44 · LAX 16:44 · JFK 19:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.