加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 19:36:07 所属栏目:百科 来源:网络整理
导读:第一章 正则表达式入门 正则表达式由两种字符构成:1. 元字符(metacharacter) 2. 文字(literal)普通的文本字符. 元字符 1. ^:代表一行的开始 2. $:代表一行的结束 上面两个元字符匹配的是一个位置,而不是具体的文本. 3. 字符组[](匹配若干字符之一):字符组的

第一章 正则表达式入门


正则表达式由两种字符构成: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. (?!…) 否定型顺序环视:如果当前位置的右侧不匹配子表达式,则匹配成功

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读