有哪些匹配文字的需求是正規表示式做不了的?

時間 2021-06-03 04:58:47

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的正規表示式入門課程,也挺好玩的...