[問題] Regular Expression兩問

看板RegExp (正規表示式 Regular Expression)作者 (撫星)時間14年前 (2011/03/17 14:59), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串1/1
1. 我記得RE不能用來解讀出巢狀結構 有記錯嗎? 所以<div></div>如果內含不定層的巢狀<div>, 我們就沒辦法準確抓取最外面的<div> 同理在這個RE的天然限制下, vi之類的editor幫程式碼上色的功能也不需要考慮巢狀 2. 我記得RE也不能比對回文 連parser也做不到 真的要比對回文得跑非線性演算法。 但是在Perl中使用了\g{}用以代表先前出現過的() 就可以表達出固定長度回文結構 /\S\S\g{2}\g{1}/ 這是不是確實超出原本RE的能力範圍? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.166.1

03/17 15:27, , 1F
你理解的都是對的。數學上的 RE 是不包含 back reference
03/17 15:27, 1F

03/17 15:28, , 2F
加上 back ref 的話會落在數學上的 RE 和 context-free 之間
03/17 15:28, 2F

03/17 15:55, , 3F
不過我還是有地方記錯了 回文至少CF grammer可以解讀
03/17 15:55, 3F

03/18 00:33, , 4F
Regex engine oniguruma 可以比對回文 不過他已經不是RE了
03/18 00:33, 4F

03/18 00:37, , 5F
pragprog.com/magazines/2010-12/whats-new-in-ruby-
03/18 00:37, 5F

03/18 00:38, , 6F
裡面有用Regex match回文和巢狀{}
03/18 00:38, 6F
文章代碼(AID): #1DWR5gUJ (RegExp)
文章代碼(AID): #1DWR5gUJ (RegExp)