多语言展示
当前在线:773今日阅读:19今日分享:20

易语言-正则表达式之其他提示

如果想要了解高级的正则引擎还支持那些复杂的正则语法,可参见网上关于DEELX正则引擎的说明文档。如果要要求表达式所匹配的内容是整个字符串,而不是从字符串中找一部分,那么可以在表达式的首尾使用'^'和'$',比如:'^\d+$'要求整个字符串只有数字。如果要求匹配的内容是一个完整的单词,而不会是单词的一部分,那么在表达式首尾使用'\b',比如:使用'\b(if|while|else|void|int……)\b'来匹配程序中的关键字。表达式不要匹配空字符串。否则会一直得到匹配成功,而结果什么都没有匹配到。比如:准备写一个匹配'123'、'123.'、'123.5'、'.5'这几种形式的表达式时,整数、小数点、小数数字都可以省略,但是不要将表达式写成:'\d*\.?\d*',因为如果什么都没有,这个表达式也可以匹配成功。更好的写法是:'\d+\.?\d*|\.\d+'。能匹配空字符串的子匹配不要循环无限次。如果括号内的子表达式中的每一部分都可以匹配0次,而这个括号整体又可以匹配无限次,那么情况可能比上一条所说的更严重,匹配过程中可能死循环。虽然现在有些正则表达式引擎已经通过办法避免了这种情况出现死循环了,比如.NET的正则表达式,但是我们仍然应该尽量避免出现这种情况。如果我们在写表达式时遇到了死循环,也可以从这一点入手,查找一下是否是本条所说的原因。合理选择贪婪模式与非贪婪模式或'|'的左右两边,对某个字符最好只有一边可以匹配,这样,不会因为'|'两边的表达式因为交换位置而有所不同。
推荐信息