作者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