1樓:碼塔男
(讀書少,列不出所有不能被正規表示式表示的語言,但可以針對乙個語言來判斷吶)
能用正規表示式表示的語言
對應某乙個有限自動機接受的語言。
有限自動機狀態是有限的,所以乙個字串在自動機狀態之間遷移的有向路徑長度若大於狀態數,路徑中必定存在環。
而且在這個環裡面多繞幾圈或者一圈不饒都可以最後到達終止狀態。
以上為幫浦引理的瞎扯版
反證法:
可以將乙個待判斷的語言假設為能用正規表示式表示。
根據語言本身的約束條件來獲得在環上的子字串的表示,然後這個環上子字串在整個字串中重複的次數可以任意給定,生成新字串。
只要有一種情況下,這個新字串不再符合這個語言的要求了,那麼產生矛盾,它不是正規表示式可以表示的語言。
2樓:天馬
嚴格來講..按Chomsky hierarchy..正則就是3型文法..於是0型1型2型就都不行..
(不過..現在平常用的正則已經超過這功能了..比如有了\1這種東西..
3樓:
ECMA-262 的 RegExp不能遞迴,而表示式長度有限,
所以不可以匹配可無限巢狀的資料結構所以看見 XML/JSON 就用 parser,好用又省事,別整天問我怎麼用正則匹配
正規表示式如何匹配 3 的倍數?
Ethan 先轉為二進位制 1 10 1 01 0 10 然後用這條正則匹配就對了 思路是 finite automata 和二進位制正則判斷數字是否能被5整除 趣味Python每週一題20170912 0369 147 258 0369 258 147 0369 258 0369 258 258 ...
用正規表示式匹配非括號內的資料
蒼爾貓鹿 js實現如下 varreg g var source cc while result reg exec source 將括號作為邊界,括號之間的內容作為第乙個分組,用全域性匹配模式,迴圈匹配,每次匹配得到乙個陣列,其中下標為1的即為第乙個分組,也就是括號之間的內容。 梁濤 解法一如果你用的...
學習正規表示式有哪些入門和高階的書籍?
寫了一篇用linux grep命令學習正則的文章,請參考。原教程是鳥哥的私房菜裡面的,我做了整理和驗證 正規表示式快速入門教程 黃芪 作為小白,推薦這本書。精通正規表示式 那本書有點厚了,個人不推薦給乙個完全沒有基礎,也沒有很多時間研究的人。還有code school的正規表示式入門課程,也挺好玩的...