極小元的概念 定義:對于任何的集合S1與S2,當S1∈S2且S1∩S2=空(沒(méi)有空這個(gè)符號,我用中文字空代替)時(shí),則稱(chēng)S1為S2的一極小元。 OK說(shuō)完了定義,我們來(lái)說(shuō)說(shuō)關(guān)于正則匹配的東東,可以把要尋找的那個(gè)字符串看成一個(gè)集合S1,而要尋找的是一個(gè)極小元,也就是一個(gè)子集 而離散的正則定理:每個(gè)不空的集合,都有一極小元,明確的說(shuō)出了,正則匹配的道理,我們要去尋找的是一個(gè)子集,也就是把大的字符串進(jìn)行了分割,而其元素為一個(gè)個(gè)小的字符串子集 正則公理的數學(xué)表達式:A≠空 推出 (存在x)(x∈A∧x∩A=空)
現在是編譯原理篇,編譯原理是根據離散的內容而來(lái)的 首先是要說(shuō)正規文法和有限自動(dòng)機 正規文法(Chomsky 3型文法) 正規式(Regular Expression): 定義:設A是非空的有限字母表,則: 1)任意,空,全集都是正規式 2)若α,β是正則,則α|β,α·β,α*,β*也是正則(關(guān)于這個(gè)是涉及到文法的問(wèn)題了,也就是大家常用的w+之類(lèi)的東東了) 3)正則只能通過(guò)有限次使用1,2規則而獲得
寫(xiě)點(diǎn)兒正規式大家都熟悉的α=a+b+c+所代表的正規集為L(cháng)(α),它可以寫(xiě)作 L(α)={abc,aabc,abc,abcc,aaabc…}看到這里大家如果用過(guò)正則的話(huà),可以很明白的看出來(lái)聯(lián)系了 關(guān)于正規集的一些數學(xué)方面的東東我就不多說(shuō)了,比如交換率,結合率之類(lèi)的 而關(guān)于多個(gè)一個(gè)一長(cháng)串的比如用或語(yǔ)句進(jìn)行的東西還需要進(jìn)行方程組的運算,不過(guò)說(shuō)了 其實(shí)這里還有一個(gè)概念就是當你用while之類(lèi)的語(yǔ)句的時(shí)候其實(shí)就是底層在用正則公式,而js或vbs用正則之所以慢是因為多重的正則尋找,就是正則下的正則,可以看看木狐貍的一個(gè)尋找的最優(yōu)公式的貼子,在多重尋找之后速度自然就慢了
現在用VBS寫(xiě)一下,簡(jiǎn)單的事例 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>新建網(wǎng)頁(yè) 3</title> </head> <script language="vbscript"> str="ssuuiadseestiaosu" dim regex,match set regex=new RegExp ‘設置正則對象 regex.Global = True ‘設置全局匹配 regex.IgnoreCase = false ‘設置區分大小寫(xiě),如果false 是區分大小寫(xiě)的 regex.pattern="[a-z]" ‘設置匹配內容 set mm=regex.execute(str) ‘執行 for each match1 in mm ‘在數組中查看 document.write match1 document.write("<br>") document.write match1.FirstIndex document.write("<br>") next </script> <body>
</body>
</html> | |