第一章 正则表达式入门
正则表达式由两种字符构成:1. 元字符(metacharacter) 2. 文字(literal)普通的文本字符. 元字符 1. ^:代表一行的开始 2. $:代表一行的结束 上面两个元字符匹配的是一个位置,而不是具体的文本. 3. 字符组[](匹配若干字符之一):字符组的内容是在同一个位置能够匹配的若干字符. 它的意思是"或".一个字符组内可以列举任意多个字符. 字符组元字符"-":只有当它在字符组内部,并且是非开头的位置时,才表示范围. 如[1-6]与[123456]是一样的. 注意:最好养成按照字符来理解正则表达式的习惯,例如 不要这样理解 ^cat 匹配以cat开头的行,而应该这样理解: ^cat匹配的是以c作为一行的第一个字符,紧接一个a,紧接一个t的文本. 4. 排除型字符组[^]: 这个字符组匹配任何未列出的字符. 如[^1-6]匹配除了1到6以外的任何字符. 注意:排除型字符组表示"匹配一个未列出的字符"而不是"不匹配列出的字符" 5. "."匹配任何一个字符,是用来匹配任意字符的字符组的简便写法. 注意:写正则表达式时,需要在对欲检索文本的了解程度与检索精确性之间求得平衡. 6. 多选结构|:意思是或,通过它可以将不同的子表达式组合成一个总表达式. 子表达式称为多选分支. 7. 可选项?:把它加到一个字符后面,表示此处容许出现这个字符,但它的出现不是匹配 成功的必要条件. 8. 重复出现 +:表示"之前紧邻的元素出现一次或多次" *:表示"之前紧邻的元素出现任意多次,或者不出现" ?,+,*统称为量词,它们限定了所作用的元素出现的次数. 规定重复次数的范围:区间 {min,max} 9. 括号及反向引用 括号的几种作用:1. 限制多选结构(多选项的范围) 2. 将若干字符组合成一个单元,受量词的作用 3. 捕获文本(为反向引用提供支持) 支持反向引用的工具中,可以用1,2等表示第一,第二组括号匹配的文本. 括号是按照做开括号"("从左到右出现的次序进行的. 10. 转义字符"":如果要匹配的某个字符恰好是元字符,那么可以用""加上该元字符 来表达,它作用的元字符会失去原来的意义,使其变成普通字符(但在字符组内是无效的) 几个简单的正则表达式 1. 程序语言中的变量名 [a-zA-Z_][a-zA-Z_0-9]* 2. 美元金额 $-?([0-9]+(.[0-9]*)?|.[0-9]+) 3. 表示时间 12小时制:([1-9]|1[012]):[0-5][0-9] 24小时制:[01]?[0-9]|2[0-3]:[0-5][0-9]
第二章 入门示例拓展
元字符 1. t:匹配制表符(TAB) 2. s:匹配所有空白(空格,指标,换行,回车) 3. S:匹配除s外的任何字符 4. w:匹配[a-zA-Z0-9] 5. W:匹配w之外的任何字符 6. d:匹配[0-9]即数字 7. D:匹配d外的任何字符 捕获型与非捕获型括号 1. (?:…) 只用来分组,而不进行文本的捕获 2. (…) 用来分组和捕获 环视结构 1. (?=…) 肯定型顺序环视:如果当前位置的右侧匹配子表达式,则匹配成功 2. (?<=…) 肯定型逆序环视:如果当前位置的左侧匹配子表达式,则匹配成功 3. (?<!…) 否定型逆序环视:如果当前位置的左侧不匹配子表达式,则匹配成功 4. (?!…) 否定型顺序环视:如果当前位置的右侧不匹配子表达式,则匹配成功 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|