1 背景介绍
1.1 为什么要学习正则表达式?
日常学习或者其他场景中,经常会遇到针对文本文件中的内容进行查找、日志分析等,对正则表达式不了解或者不清楚,搞的比较难做。
1.2 什么是正则表达式?
正则表达式,Regular Expression,简称RE。
它表达的是一种文本模式。
它自己是一个字符串。
它是一些字符和特殊字符组成的。
1.3 正则表达式可以做什么?
反正挺有用的,知道的人都知道。几个常用的地方:
1、单个文件内查找指定模式的字符串
2、磁盘上查找文件名称匹配某个模式的文件,列出来匹配了规则的文件路径
3、和linux命令grep、sed、awk等结合使用,做到删除、替换、查找文本等常规操作。
4、和java或者shell编程实现文本的高级处理
5、其他字符串处理的场景。
总之,正则表达式的使用场景在字符串领域是应用广泛的,值得稍微花点时间学习一下。
2 基本语法
序号 | 字符分类 | 字符 | 简要说明 | 使用介绍 |
---|---|---|---|---|
1 | 普通字符 | [A-Z] | 从字符串中匹配大字母字符 | – |
2 | 普通字符 | [a-z] | 从字符串中匹配小写字母字符 | – |
3 | 普通字符 | [0-9] | 从字符串中匹配数字 | 相当于\d |
4 | 普通字符 | [A-Za-z] | 从字符串中匹配所有字母字符 | – |
5 | 普通字符 | [A-Za-z0-9] | 从字符串中匹配字母和数字 | – |
6 | 普通字符 | [具体的字符集合] | 从字符串中匹配指定的字符集合中的字符 | 例如:[abc123] 就是从字符串中匹配a、b、c、1、2、3的字符,但凡字符串中出现这6个字符,都判定为命中状态。 |
7 | 普通字符 | [^具体的字符集合] | 非的逻辑,匹配字符串中不在指定范围内字符 | 例如:[^A-Z]表示匹配字符串中不是大写字母的字符。 |
8 | 普通字符 | .字符点(我很小看不清) | 匹配1个字符,这个字符是任意字符,但是不包括换行符(\n和\r) | 等效于[^\n\r] |
9 | 普通字符 | \d | 匹配数字 | 等效于[0-9] |
10 | 普通字符 | \w | 匹配字母、数字、下划线 | 等效于[A-Za-z0-9_] |
1 | 定位字符 | ^正则模式字符串 | 匹配输入字符串的开始位置,相当于是限定在开头要匹配命中。 | 例如:^[#*],匹配开头是#或者*的字符串。 |
2 | 定位字符 | 正则模式字符串$ | 匹配输入字符串结尾位置,相当于限定要从结尾开始匹配 | 例如:[#*]$,匹配结尾是#或者*的字符串。 |
1 | 转义字符 | \ | 反斜杠字符,转义字符,把特殊意义的符号的特殊意义去除 | 例如:\.\$ 表示的是匹配包括.$字符的字符串,而不是表示作为字符串结尾包括.的字符串。如果要匹配的是以圆点.结尾的字符串,那么正则是这样的:\.$ |
1 | 元字符 | * | 该字符跟在其他字符后面的位置,表示的是匹配前面的子表达式0次或者多次,注意包括0次。 | 也就是大于或等于0次,相当于{0,},举例:zo*,意思是匹配z字母后面跟大于等于0个o字母,包括z,zo,zoo等等。 |
2 | 元字符 | + | 匹配前面子表达式大于等于1次 | 相当于{1,} |
3 | 元字符 | ? | 匹配前面子表达式0或1次 | 相当于{0,1} |
4 | 元字符 | {n} | 匹配前面子表达式n次 | |
5 | 元字符 | {n,} | 匹配前面子表达式>=n次 | |
6 | 元字符 | {n,m} | 匹配前面子表达式n~m次,包括n和m,m>=n | 例如:abc{1,3} 意思是匹配abc,abcabc,abcabcabc三种情况 |
7 | 元字符 | 子表达式1|子表达式2 | 匹配子表达式1和子表达式2, | 例如:abc|123,表示匹配abc或者123两种情况 |