正则表达式

基础的正则表达式

1、“.”符号
点符号用于匹配除换行符之外的任意一个字符。例如:r.t可以匹配rot、rut,但是不能匹配root,如果使用r..t就可以匹配root、ruut、r t(中间是两个空格)等。
在这里插入图片描述
2、“*”符号
“ * ”符号用于匹配前一个字符0次或任意多次,比如ab*,可以匹配a、ab、abb等。“ * ”号经常和“.”符号加在一起使用。比如“.*”代表任意长度的不包含换行的字符。
在这里插入图片描述
3、“{n,m}”符号
使用“\{n,m\}”符号可以灵活的控制字符的重复次数,典型的有以下3种形式:

\{n\} 匹配前面的字符n次:grep "ro\{2\}t" /etc/passwd(r和t中包含两个o)
在这里插入图片描述
\{n,\} 匹配前面的字符至少n次以上(含n次)
在这里插入图片描述
\{n,m\} 匹配前面的字符n到m次。
在这里插入图片描述
4."^"符号
用于匹配开头的字符。
在这里插入图片描述
5、“$”符号
用于匹配结尾的字符。

“^$” 代表空行

在这里插入图片描述
以r开头,中间有一串任意字符,以h结尾的行
在这里插入图片描述
6、“[]”符号
一对方括号,用于匹配方括号内出现的任一字符。

[ABCD] 就是A、B、C、D中的任意一个
[A-Z] 匹配任意一个大写字母
[A-Za-z] 匹配任意一个字母
[^A-Z] 代表不是大写字母 “^”符号在[]里面就是取反

匹配手机号。手机号是11位连续的数字,第一位一定是1,所以表示为“^1”;第二位有可能是3(移动)或8(联通),表示为“[38]”;后面连续9个任意数字,表示为“[0-9]\{9\}”
所以整个表达式为:“^1[38][0-9]\{9\}

7、“\”符号
转义符号

例如:021-88888888 和021 88888888 两种不同的电话号码写法,如何匹配呢?
[ -]是错误的[\ \-]是对的 \对空格和-进行了转义
如何匹配任意长度的点号呢? “\.*”
如果要对“\”符号进行转义,就可以写成:“\\”

8、“\<”符号和“\>”符号
这两个符号分别用于界定单词的左边界和右边界。

“\<hello”用于匹配以“hello”开头的单词
“hello\>”则用于匹配以“hello”结尾的单词
“\<\>”用于精确匹配一个字符串。
“\<hello\>”精确匹配单词hello,而不是helloworld等

在这里插入图片描述
9、“\b”符号
匹配单词的边界,比如“\bhello\b”可以精确匹配“hello”单词

10、“\B”符号
匹配非单词的边界,比如hello\B可以匹配“helloworld”中的"hello"。

11、“\w”符号
匹配字母、数字和下划线,等价于[A-Za-z0-9]

12、“\W”符号
匹配非字母、非数字、非下划线,等价于[^A-Za-z0-9]

13、“\n”符号
匹配一个换行符

14、“\r”符号
匹配一个回车符

15、“\t”符号
匹配一个制表符

16、“\f”符号
匹配一个换页符

17、“\s”符号
匹配任何空白字符

18、“\S”符号
匹配任何非空白字符

扩展的正则表达式

在基础正则表达式上做了一些补充。注意,在使用这些扩展符号时,需要使用egrep命令
1、“?”符号
用于匹配前一个字符0次或1次,所以"ro?t" 仅可以匹配rot、rt

2、“+”符号
用于匹配前一个字符1次以上,所以“ro+t”可以匹配rot、root等。

3、“|”符号
“|”符号是“或”的意思,即多种可能的罗列,彼此间是一种分支关系。

比如
区号是3位的固定电话的正则表达式方式
^0[0-9]\{2\}-[0-9]\{8\}
区号是4位的固定电话的正则表达式方式
^0[0-9]\{3\}-[0-9]\{8\}
两种区号的固定电话号码可以这样写:
^0[0-9]\{2,3\}-[0-9]\{8\}
使用“|”符号也可以,但是 显然比上面的方式麻烦
^0[0-9]\{2\}-[0-9]\{8\}|^0[0-9]\{3\}-[0-9]\{8\}

4、“()”符号
“()”符号通常需要和“|”符号联合使用,用于枚举一系列可替换的字符。

使用“()”和“|”匹配hard、hold或hood
h(ar|ol|oo)d

通配符

通配符和正则表达式之间存在一些差异,通配符主要用在文件名的匹配上,正则表达式主要使用在对文件内容的匹配上。

1、“*”符号
代表0个或多个字符
列出当前目录下以“.txt”结尾的文件
在这里插入图片描述

2、“?”符号
代表任意一个字符

3、“{}”符号
匹配所有括号内包含的以逗号隔开的字符
在这里插入图片描述

4、“^”符号和“!”符号
这两个符号往往和“[]”一起使用,当出现在“[]”中的时候,代表取反。所以[^A][!A]都代表不是A

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值