正则表达式基础介绍
正则表达式
正则表达式通过一些特殊符号的帮助,使用户可以轻松快捷的完成查找、删除、替换等处理程序
正则表达式特殊符号
1 | [:alnum:]代表英文大小写字母及数字 |
利用grep
查找文件中的小写字符 1
$ grep -n '[[:lower:]]' examples.txt
字符组匹配
[]
中包含的任意一个字符,只能是一个
-
表示一个自范围,要求前面字符的码位小于后面字符的码位
[^...]
排除型字符组,表示排除后面的字符
例如: 1
2
3
4
5[abc] :表示“a”或“b”或“c”
[0-9] :表示 0~9 中任意一个数字,等价于[0123456789]
[\u4e00-\u9fa5] :表示任意一个汉字
[^a1<] :表示除“a”、“1”、“<”外的其它任意一个字符
[^a-z] :表示除小写字母外的任意一个字符
任意一个字符.
与重复字符*
.
表示任意一个字符,一个小数点只能表示一个未知字符
1
$ grep -n 'wh.t' examples.txt
#
表示重复前面0个或者多个字符 1
2
3
4e*: 表示具有空字符或者一个以上 e 字符。
ee*,表示前面的第一个 e 字符必须存在。第二个 e 则可以是 0 个或者多个 e 字符。
eee*,表示前面两个 e 字符必须存在。第三个 e 则可以是 0 个或者多个 e 字符。
ee*e :表示前面的第一个与第三个 e 字符必须存在。第二个 e 则可以是 0 个或者多个 e 字符。+
或者?
来表示
+
表示重复1个或者1个以上的前一个字符 1
$ grep 'go+d' examples.txt
1
$ grep 'goo#d' examples.txt
?
表示重复0个或者1个以上前一个字符
限定连续字符范围{}
{}
可限制一个范围区间内的重复字符数,必要时可能需要转义
查找连续的2-5个o 1
$ grep -n 'go\{2,5\}g' examples.txt
行首符^
和行尾符$
1 | '^[A-Z]' 表示以大写字母开头。 |
其他
|
表示用或的方式找出数个字符串
()
表示找出群组的字符串
搜索glad或者good这两个字符串 1
$ grep 'g(la|oo)d' examples.txt
A(xyx)+C
表示查找A
开头C
结尾,中间有若干个xyz
的字符串
tips
grep常见参数 1
2
3
4
5
6
7
8
9-a :将 binary 档案以 text 档案的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!