正则 通配符 笔记

# 正则表达式基础

1. " . "
用于匹配除了换行符之外的任意一个字符
grep 'r..t' /etc/passwd   'root','reet' 之类的都能匹配到

2."  *  "
用于匹配前一个字符0次或者任意多次
grep 'r*t' /etc/passwd   'root','reet','rdsafsdat' 之类的都能匹配到

grep 'r.*t' /etc/passwd 代表查找包含字母r,后面紧跟任意长度的字符,再跟一个字母t的行

3 " \{n,m\}"
虽然用 " * "可以用于重复匹配前一个字符,但是使用"\{n,m\}" 符号则能更加灵活的控制字符的重复次数
,典型的有以下三种形式::

"\{n\}"
匹配前面的字符n次

grep 'ro\{2\}t' /etc/passwd  匹配包含root的行(r和t中包含两个o)

"\{n,\}"
匹配前面的字符,至少n次以上(含n次)
grep 'ro\{0,\}t'  /etc/passwd

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

4." ^ "
用于匹配开头字符  '^root' 匹配的是以root开头的行
grep '^root' /etc/passwd

5. " $"
用于匹配尾部  ,'root$' 代表以root结尾的行 , 则 " ^$ " 代表该行为空

grep '^r.*h$' /ect/passwd  以r开,中间有任意一串字符串,以h结尾

6. " [] "
用于匹配方括号内出现的任意字符,比如说单项选择的答案是ABCD,用正则表示 就是[ABCD]
[A-Z] 所有的大写字母
[a-z] 所有的小写字母
[A-Za-z] 所有的字母

'^'在[]中表示取反的意思
[^A-D] 表示不是大写字母A-D
11位手机号 可以表示为 "  ^1[3875][0-9]\{9\} "

7. " \ "
对特殊字符转义
021-888888   " [0-9]\{3\}[\\ -][0-9]\{6\}"

8."  \<  "  和  " \> "
这两个符号分别用于界定左边界和右边届.
" \<hello" 用于 匹配以hello开头的单词
" hello \>" 用于匹配 以hello结尾的单词

"\<hello\>" 用于精确匹配单词  hello

9."  \d " 匹配一个数字,等价于 [0-9]

echo 123 | grep '[0-9]'
echo 123 | grep -P '\d'

10. " \b "
匹配单词边界
" \bhello\b"  精确匹配" hello "单词

11."  \B  "
匹配非单词的边界, 比如" hello\B" 可以匹配' helloworld' 中的'hello'

echo "helloworld" | grep 'hello\B'

12." \w "
匹配字母,数字和下划线, 等价于 [A-Za-z0-9]

13. " \W"
匹配非字母,非数字,非下划线, 等价于 [^A-Za-z0-9]

echo '\\' |grep '\W'

14. "\n"
匹配一个换行符

15. " \r "
匹配一个回车符

16. " \t "
匹配一个制表符

17. ' \f '
匹配一个换页符

18. '\s'
匹配任何空白字符

19. "\S"
匹配任何非空白字符


# 扩展的正则表达式

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. "  ()  "
通常和" | " 联合使用,用于枚举一系列可以替换的字符

匹配 021-11111111 和 0215 11111111
^0[0-9]\{2,3\}(- | )[0-9]\{8\}
^0[0-9]\{2,3\}[\ \-][0-9]\{8\}

匹配 hard . hold . hood
h(ar|oo|ol)d

 

 

 

# 通配符
通配符是一种特殊的语句,主要包含" * " 和 " ? "还有("{}", " ^ ", "!")
主要是用来模糊搜索文件

1." * "
ls -al *.doc  列出目录中以.doc结尾的文件
ls -al A*.php 列出目录中以A开头的.php文件


2. " ? "
代表任意一个字符 ,占位符
ls -al A?.doc 列出所有以A开头 并且 名称只有两个字符的doc文件


3." {} "
可以匹配所有括号内包含的 以逗号隔开的字符

ls -al {A-C}.php
ls -al {A,B,C}.php 列出所有以A B C 的以.php结尾的文件

ls -al {[A-Z]*.doc,[0-9]??.txt}  所有大写字母开头的doc文件和所有数字开头 并且名称只有三个字符的txt文件

4. " ^ " 和 " ! "
[^A] 和 [!A]代表不是A

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值