示例2:?
?:匹配前面子表达式0次或者1次
网络异常,图片无法展示
|
示例3:( )
( ):将括号中的字符串作为一个整体
网络异常,图片无法展示
|
示例4:|
|:以"或"的方式匹配字符串。
网络异常,图片无法展示
|
3 案例演示
案例1:匹配电话号码
要求:
- 匹配 025 开头的区号。
- 电话号码要5 或者 8开头的八位数。
- 格式如下:
区号 号码 区号-号码 区号号码 123 复制代码
- 要求全号码格式匹配。
操作:
[root@yuji sh]# cat hh.txt 02588888888 //符合 025-5555555555 025 12345678 025 54321678 //符合 025ABC88888 025-85432109 //符合 0251-85432109 0025-85432109 [root@yuji sh]# egrep "^(025)[- ]?[58][0-9]{7}$" hh.txt 02588888888 025 54321678 025-85432109 复制代码
网络异常,图片无法展示
|
案例2:匹配电子邮箱
电子邮箱:
用户名@子域名.[二级域名].顶级域
要求:
- 用户名:长度要求在6-18位,任意大小写英文,任意数字,除了@符号和空格以外的其它任意符号字符,开头只能是 _ 或者字母。
- 子域名.[二级域名]:长度任意,符号只能包含 - _ .
- .顶级域名:长度在2-5,任意大小写英文。
- 完整匹配。
需求分解:
用户名长度要求在6-18位 {6,18} 除了@符号和空格以外的其它任意符号字符 [^@ ] 开头只能是 _ 或者字母 ^[a-zA-Z_] 长度任意,符号只能包含-_. [a-zA-Z0-9-_.]+ 长度在2-5,任意大小写英文 \.[a-zA-Z]{2,5} 复制代码
操作:
[root@localhost ~]# cat mail.txt zhangsan123@qq.com li_si@163.com wang@wu@sina.com zhao liu@126.com qianqi@sina.com.cn [root@localhost ~]# egrep "(^[a-zA-Z_][^@ ]{5,17})@([a-zA-Z0-9-_.]+).[a-zA-Z]{2,5}$" mail.txt zhangsan123@qq.com qianqi@sina.com.cn 复制代码
网络异常,图片无法展示
|
4 易错总结
- 表示任意字符(包括换行符):
[.\n]或者(.|\n) - 匹配前面子表达式0次或多次:
[.\n] * - 匹配前面子表达式1次或多次:
[.\n]+或者[.\n]{1,} - 匹配前面子表达式0次或1次:
[.\n]? [...]中括号表示去匹配括号内的任意一个字符,中括号内不需要加 "|" 。- 判断一个表达式中使用的是正则表达式还是通配符,可以看用的是什么命令。例如,“ls” 查看的是文件名,用的就是通配符;“grep” 查看的是文件内容,用的就是正则表达式。