RegExp 板


LINE

二月底在做模板处理时,发现常常有 RegExp 卡住的状况,之後发现有时是因为要跑很久。 在 node, firefox, IE 三大引擎上跑都一样。 例如: '012345678901234567890123456789;'.match(/^(?:[^;]*)*$/) 用人脑计算,这式子显然匹配不出结果;但电脑似乎还没足够聪明? 前面数字多添一点,跑出结果的时间会变长许多(呈天文数字成长?)。 看来只要 pattern 写得糟一点,确实是可能让 regular expression engine 挂掉不动的。 不过同样的式子,perl 的 engine 似乎就比较聪明,马上就跑出来了。 至於其 workaround,只好放弃一次完成,采用一个个 match。 以上例而言,就是一次次 .match(/^[^;]*/),并侦测是否从头到尾都符合,直到完成。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.173.96.149
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/RegExp/M.1425821856.A.FFF.html
1F:推 LiloHuang: 这是相当常见的 Catastrophic Backtracking 问题 03/08 23:41
2F:→ LiloHuang: 时间复杂度至少会是 Exponential time complexity 03/09 00:14
3F:→ LiloHuang: 而 Perl 的 RegExp 引擎,具备有上述问题的侦测能力 03/09 00:15
4F:→ LiloHuang: 可在 Perl script 内,第一行加入 use re 'debug'; 03/09 00:16
5F:→ LiloHuang: 执行後可轻易观察出其匹配的规则,以及错误侦测的方式 03/09 00:17
6F:→ colorless: 感谢高手补充说明 :) 03/09 21:30
7F:→ carylorrk: 以前学 compiler 的时候都只教最简单的 DFA,感觉超有 03/12 01:34
8F:→ carylorrk: 效率,但是後来才知道实际上在用的复杂多了 03/12 01:35
9F:推 LPH66: DFA-based engine 不好写, 而且碰到这种状况状态数会爆炸多 03/12 18:40
10F:→ LPH66: (跟 NFA-based engine 的执行时间一样是指数成长) 03/12 18:41
11F:→ LPH66: 某种程度上其实可以说 NFA based 拿时间换空间 03/12 18:41







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP