Re: [問題] 正規表示法處理的很慢
看板RegExp (正規表示式 Regular Expression)作者lg31cm (我住5F)時間16年前 (2009/07/11 03:39)推噓4(4推 0噓 2→)留言6則, 2人參與討論串2/2 (看更多)
※ 引述《ta0306556 (POIL)》之銘言:
: 有一堆資料,我手上有的資訊為 本文和詞性
: 那有時候我需要用到詞性去做比對,有時候要用到本文做比對
: 但是我都是要結取出本文,而正規表示法又不能夠比對字串陣列
: 所以我必須把正規表示法做成下列的樣子:
: @嚴長壽~Nb@,~.*(<value>@.*~.*@.*~.*@.*~.*)@出生~.*
: 我以@作為詞的分隔,每個詞有兩個欄位,分別為:「本文~詞性」
: 那我要去做比對的時候,把我要的資訊放上去
: 要忽略的地方改為".*",因此會有很多個".*"
: 但是這樣會讓程式幾乎跑不動,太慢了
: 請問有沒有其他的方法可以改善...
典型的.*濫用,假如你的 regex engine 是 NFA(大部分
regex都是採用NFA),可以說一定慢到你受不了,因為.*
會一直往後吃字元直到字串結尾或是end of line,接著
因為你的.*後面又有其他字元,regex engine只好不斷
backtracking直到找到match的字元為止,假如你要處理的
資料很短還沒關係,資料一長一定會讓match時間成指數級成長
你的.*還不只一個,engine光是backtracking就夠忙的了,當然
慢到讓你覺得電腦當了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.124.98.159
推
07/11 21:51, , 1F
07/11 21:51, 1F
→
07/11 21:52, , 2F
07/11 21:52, 2F
推
07/11 23:08, , 3F
07/11 23:08, 3F
→
07/11 23:09, , 4F
07/11 23:09, 4F
推
07/12 00:14, , 5F
07/12 00:14, 5F
推
07/12 01:17, , 6F
07/12 01:17, 6F
討論串 (同標題文章)
RegExp 近期熱門文章
PTT數位生活區 即時熱門文章