易語言正則表達(dá)式中的其他提示
如果想要了解高級(jí)的正則引擎還支持那些復(fù)雜的正則語法,可參見網(wǎng)上關(guān)于 DEELX 正則引擎的說明文檔。匹配整個(gè)字符串如果要求表達(dá)式所匹配的內(nèi)容是整個(gè)字符串,而不是從字符串中找一部分,那么可以在表達(dá)式的首
如果想要了解高級(jí)的正則引擎還支持那些復(fù)雜的正則語法,可參見網(wǎng)上關(guān)于 DEELX 正則引擎的說明文檔。
匹配整個(gè)字符串
如果要求表達(dá)式所匹配的內(nèi)容是整個(gè)字符串,而不是從字符串中找一部分,那么可以在表達(dá)式的首尾使用 "^" 和 "$",比如:"^d$" 要求整個(gè)字符串只有數(shù)字。
匹配完整單詞
如果要求匹配的內(nèi)容是一個(gè)完整的單詞,而不會(huì)是單詞的一部分,那么在表達(dá)式首尾使用 "",比如:使用 "(if|while|else|void|int...)" 來匹配程序中的關(guān)鍵字。
避免匹配空字符串
表達(dá)式不要匹配空字符串。否則會(huì)一直得到匹配成功,而結(jié)果什么都沒有匹配到。比如:準(zhǔn)備寫一個(gè)匹配 "123"、"123."、"123.5"、".5" 這幾種形式的表達(dá)式時(shí),整數(shù)、小數(shù)點(diǎn)、小數(shù)數(shù)字都可以省略,但是不要將表達(dá)式寫成:"d*.?d*",因?yàn)槿绻裁炊紱]有,這個(gè)表達(dá)式也可以匹配成功。更好的寫法是:"d .?d*|.d "。
避免無限循環(huán)
能匹配空字符串的子匹配不要循環(huán)無限次。如果括號(hào)內(nèi)的子表達(dá)式中的每一部分都可以匹配 0 次,而這個(gè)括號(hào)整體又可以匹配無限次,那么情況可能比上一條所說的更嚴(yán)重,匹配過程中可能死循環(huán)。雖然現(xiàn)在有些正則表達(dá)式引擎已經(jīng)通過辦法避免了這種情況出現(xiàn)死循環(huán)了,比如 .NET 的正則表達(dá)式,但是我們?nèi)匀粦?yīng)該盡量避免出現(xiàn)這種情況。如果我們?cè)趯懕磉_(dá)式時(shí)遇到了死循環(huán),也可以從這一點(diǎn)入手,查找一下是否是本條所說的原因。
合理選擇貪婪模式與非貪婪模式
合理選擇貪婪模式與非貪婪模式或 "|" 的左右兩邊,對(duì)某個(gè)字符最好只有一邊可以匹配,這樣,不會(huì)因?yàn)?"|" 兩邊的表達(dá)式因?yàn)榻粨Q位置而有所不同。
新易語言正則表達(dá)式的高級(jí)使用技巧