[問題] Regular Expression兩問

作者: StarTouching (撫星)   2011-03-17 14:59:52
1.
我記得RE不能用來解讀出巢狀結構 有記錯嗎?
所以<div></div>如果內含不定層的巢狀<div>, 我們就沒辦法準確抓取最外面的<div>
同理在這個RE的天然限制下, vi之類的editor幫程式碼上色的功能也不需要考慮巢狀
2.
我記得RE也不能比對回文 連parser也做不到
真的要比對回文得跑非線性演算法。
但是在Perl中使用了\g{}用以代表先前出現過的() 就可以表達出固定長度回文結構
/\S\S\g{2}\g{1}/
這是不是確實超出原本RE的能力範圍?
作者: LPH66 (-6.2598534e+18f)   2011-03-17 15:27:00
你理解的都是對的。數學上的 RE 是不包含 back reference加上 back ref 的話會落在數學上的 RE 和 context-free 之間
作者: StarTouching (撫星)   2011-03-17 15:55:00
不過我還是有地方記錯了 回文至少CF grammer可以解讀
作者: ggegge (Egg)   2011-03-18 00:33:00
Regex engine oniguruma 可以比對回文 不過他已經不是RE了pragprog.com/magazines/2010-12/whats-new-in-ruby-裡面有用Regex match回文和巢狀{}

Links booklink

Contact Us: admin [ a t ] ucptt.com