作者StarTouching (撫星)
看板RegExp
標題[問題] Regular Expression兩問
時間Thu Mar 17 14:59:52 2011
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
1F:推 LPH66:你理解的都是對的。數學上的 RE 是不包含 back reference 03/17 15:27
2F:→ LPH66:加上 back ref 的話會落在數學上的 RE 和 context-free 之間 03/17 15:28
3F:→ StarTouching:不過我還是有地方記錯了 回文至少CF grammer可以解讀 03/17 15:55
4F:推 ggegge:Regex engine oniguruma 可以比對回文 不過他已經不是RE了 03/18 00:33
5F:推 ggegge:pragprog.com/magazines/2010-12/whats-new-in-ruby- 03/18 00:37
6F:→ ggegge:裡面有用Regex match回文和巢狀{} 03/18 00:38