文章背景
- 对于正则表达式,相信很多开发者在进行一些特殊的文本处理或者日常排查日志中会使用到。
- 今天就通过一个实战带大家轻松入门正则表达式。
- 让我们直接开始练习吧
- 首先准备练习文本,这份文档是从网上改编而来,我们可将其命名为test.txt,
1 | erlang复制代码Football game is not use feet only. |
通过grep来使用正则表达式
- 本篇文章将介绍
- grep 命令
- 行首行尾符
- 任意和重复字符
- 限定连续字符范围
- 字符组匹配
- 正则表达式特殊符号
- 正则中贪婪模式和非贪婪模式的区别
- grep 命令
- grep命令
- 常用参数说明
- -c :计算符合规则的字符串个数
- -i :忽略大小写的差别
- -n :带行号输出
- -v :反向查找,显示不符合规则内容的行
- -c :计算符合规则的字符串个数
1 | perl复制代码grep -c 'test' test.txt |
1 | perl复制代码grep -vn 'test' test.txt |
- 行首行尾符
- 行首符 ^ 与行尾符 $
- 当查找含有
GNU
开头的字符串时,则可以使用以下命令
- 当查找含有
- 行首符 ^ 与行尾符 $
1
perl复制代码grep -n '^GNU' test.txt

- 任意和重复字符
- 可以用任意字符
.
与重复字符*
来查找s?u?类型的字符
- 可以用任意字符
1
perl复制代码grep -n 's.u.' test.txt

1 | markdown复制代码小数点.表示任意一个字符 |
1 | perl复制代码grep -n 's*' test.txt |
- 限定连续字符范围
- 此处需要注意的是用到了转义字符``

+ 限定连续字符范围{}
+ `{ }` 可限制一个范围区间内的重复字符数。如果现在要求找出存在连续的两个 e 字符的字符串,根据前面所学的知识,我们可以使用:
1
perl复制代码grep -n 'ooo*' test.txt
+ 第2种方法便是使用`{}`
`grep -n 'o{2}' test.txt`
- 字符组匹配
[]
可以用来匹配字符组[]
里无论是使用多少个字符,它只代表一个,比如我们想查找use
和me
这两个?e
格式
1 | perl复制代码grep -n '[sm]e' test.txt |
[^]
为反向选择字符组,用于排除后面的字符,使用方式为 [^...]
。它和参数-v
区别在于-v
只会输出不含有反向选择的字符的行。
1 | perl复制代码grep -nv 'eet' text.txt |
其他使用例子
1 | less复制代码[abc] :表示 “a” 或 “b” 或 “c” |
- 正则表达式特殊符号
1 | css复制代码[:xdigit:]代表 16 进位的数字类型 |
- 正则中贪婪模式和非贪婪模式的区别
1 | javascript复制代码贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,通俗说法就是匹配范围的大小。 |
今天就和大家介绍到这了,欢迎关注我的微信公众号【那未明】来聊聊!
本文转载自: 掘金