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