正则表达式的应用是在Linux文本做查找的时候,相当于Ctrl+F的查找功能,他是由一串字符和元字符组合而成的字符串。
在开发中,经常使用到一些正则表达式,用来进行匹配相应的字符串
元字符
1、任一单字符: “.”
点字符串可以匹配任一一个字符,但是不能匹配换行符,一个点只能匹配一个字符,示例 grep 'r..t' /etc/passwd
2、“ * ” 星号
星号可以直接匹配前的一个0次或者任意多次,可以和点符号一起使用 ,“ .* ”代表任意长度的不包含换行的字符。
3、“ {n,m} ”符号
使用“{n,m}”符号则能更加灵活地控制字符的重复次数,{n} 匹配前面的字符n次,{n,} 匹配前面的字符至少n次以上(含n次),{n,m} 匹配前面的字符n到m次
案例 [root@localhost ~]# grep 'ro\{0,\}t'
、 [root@localhost ~]# grep 'ro\{0,\}t'
4、“^”符号
这个尖角号,用来匹配开头的符号,如想要查询以root开头的就可以使用 grep '^root' /etc/passwd
5、“$”符号
这是表示以某个符号作为结尾的,可以和尖角号一起使用,可以查看以某个字符开头和以某个字符结尾的文本。“^ ”这个是特殊的,表示这个行为空。 ‘ g r e p ′ r . ∗ h ”这个是特殊的,表示这个行为空。`grep '^r.*h ”这个是特殊的,表示这个行为空。‘grep′r.∗h’ /etc/passwd`
6、“[]”符号
这个是匹配在方括号中出现的任意一个字符。就可以是匹配ABCD的任意一个 [ABCD]
,匹配所有的字母,中间的-是限定范围的意思[A-Za-z]
, 匹配不属于ABCD的字符 [^A-D]
,手机号规则^1[358][0-9]\{9\}
7、“\”符号
这是一个转义字符,比如说是在任意长度的匹配 \.*
,转义\字符就是\\
, 范围限定的-修改为区号中的分隔号[\ \-]
8、"\<“ 和"\>"边界符号
这两个符号是左右边界的符号,能够实现一个精准的匹配的功能。“\<hello\>”
可精确匹配单词hello,而不是helloworld相关的内容
此外可以使用的常用命令是可以参考的echo "hello" | grep '\<hello>\'
,这里的命令就是表示可以精准匹配hello
这几个是在实际中经常使用到的元字符,可以在一定程就能完成对工作的实现了
-
\d
匹配数字
在匹配 数字的时候,可以使用的方式有两种,一种是常规的,一种是使用这里介绍echo 123 | grep [0-9]
、echo 123 | grep -p '\d'
-
\b
匹配单词边界 ,echo "hello world" | grep '\bhello\b'
-
\B
匹配非单词边界,echo "helloworld" | grep 'hello\B'
-
\w
匹配字母、数字、下划线,等价于[A-Za-z0-9]
,使用是echo "a" | grep '\w'
-
\W
匹配非数字、非字母、非下划线,等价于[^A-Za-z0-9]
\n 是匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符。
\f 匹配一个换页符。
\s 匹配任何空白字符。
\S 匹配任何非空白字符。
通配符
通配符是一种特殊的语句,主要包含“*”号和“?”号(还有“{}”、“^”、“!”)
这些符号可以匹配多个文件