0
点赞
收藏
分享

微信扫一扫

正则表达式—基础正则表达式

正则表达式

基础正则表达式

  • 正则表达式就是能用某种模式去匹配一类字符串的公式,它是由一串字符和元字符构成 的字符串。所谓元字符,就是用以阐述字符表达式的内容、转换和描述各种操作信息的字符。
  • 正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式 通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程 序。vim、grep、find、awk、sed等命令都支持正则表达式。

基础的正则表达式

1、“.”(一个点)符号

  • 点符号用于匹配除换行符之外的任意一个字符。例如:r.t可以匹配rot、rut,但是不能匹 配root,如果使用r…t就可以匹配root、ruutr t(中间是两个空格)等

[root@sunday-test ~]# grep "r..t" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

2、“*”符号

  • “\”符号用于匹配前一个字符0次或任意多次,比如ab,可以匹配a、ab、abb 等
  • “\”号经常和 “.” 符号加在一起使用。比如 “.”代表任意长度的不包含换行的字符。

[root@sunday-test ~]# grep "rr*t" /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin

3、“{n,m}”符号

  • 使用“{n,m}”符号可以灵活的控制字符的重复次数,典型的有以下3种形式:
  • \\{n\\} 匹配前面的字符n次。

[root@wxl ~]# grep "ro\{2\}t" /etc/passwd
root:x:0:0:root:/root:/usr/bin/fish
operator:x:11:0:operator:/root:/sbin/nologin
You have new mail in /var/mail/roo

  • \\{n,\\} 匹配前面的字符至少n次以上(含n次)

[root@wxl ~]#  grep "ro\{2,\}t" /etc/passwd
root:x:0:0:root:/root:/usr/bin/fish
operator:x:11:0:operator:/root:/sbin/nologin

  • \{n,m\\} 匹配前面的字符 n 到 m 次 。

4、"^"符号

  • 用于匹配开头的字符

[root@sunday-test ~]# grep "^root" /etc/passwd
root:x:0:0:root:/root:/bin/bash

5、“$”符号

  • 用于匹配结尾的字符。
  • “abc$”代表以abc结尾
  • “^$” 代表空行
  • 例:以r开头,中间有一串任意字符,以h结尾的行。

[root@wxl ~]# grep "^r.*h$" /etc/passwd
root:x:0:0:root:/root:/usr/bin/fish

6、“[]”符号

  • 一对方括号,用于匹配方括号内出现的任一字符。

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

7、\”符号 转义符号

  • 对有特殊意思的符号进行转义,转义成普通字符。

[ -]    是错误的
[\ \-]  是对的 \对空格和-进行了转义

8、“<”符号和“>”符号

  • 两个符号分别用于界定单词的左边界和右边界。

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

以上8中元字符是最常见的,还有一些不太常用的字符,这些字符中有不少可以使用前面8 种基础的元字符来表示。

符号

作用

“\b”

匹配单词的边界,比如“\bhello\b”可以精确匹配“hello”单词

“\B”

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

“\w”

匹配字母、数字和下划线,等价于[A-Za-z0-9]

“\W”

匹配非字母、非数字、非下划线,等价于[^A-Za-z0-9]

“\n”

匹配一个换行符

“\r”

匹配一个回车符

“\t”

匹配一个制表符

“\f”

匹配一个换页符

“\s”

匹配任何空白字符

\S”

匹配任何非空白字符


举报

相关推荐

0 条评论