基础正则表达式

基础正则表达式

元字符作用
*前一个字符匹配 0 次或任意多次。
.匹配除了换行符外任意一个字符。
^匹配行首。例如:^hello 会匹配以 hello 开头的行。
$匹配行尾。例如:hello$ 会匹配以 hello 结尾的行。
[]匹配中括号中指定的任意一个字符,只匹配一个字符。
例如:[aoeiu]匹配任意一个元音字母,[0-9]匹配任意一位数字,[a-z][0-9]匹配小写字和一位数字构成的两位字符。
[^]匹配除中括号的字符以外的任意一个字符。例如:[^0-9] 匹配任意一位非数字字符,[^a-z] 表示任意一位非小写字母。
\转义符。用于将特殊符号的含义取消。
\{n\}表示其前面的字符恰好出现 n 次。例如:[0-9]\{4\} 匹配 4 位数字,[1][3-8][0-9]\{9\} 匹配手机号码。
\{n,\}表示其前面的字符出现不小于 n 次。例如:[0-9]\{2,\} 表示两位及以上的数字。
\{n,m\}表示其前面的字符至少出现 n 次,最多出现 m 次。例如:[a-z]\{6,8\} 匹配 6 到 8 位的小写字母。

? 和 () 是扩展正则

匹配练习参考文件内容:

[root@localhost ~]# vim test.txt 
a
aa
aaa
aaaa
aaaaa.

xcu
xccu
xcccu
xccccu
xcccccu

said
soid
suud
sooooood.
12345
5678
7832
bbbbbbbbbb44445bbbb
6aaaaaaaaaaaa

ab
aabb

b
bb
bbb
bbbb
bbbbb

“*”前一个字符匹配 0 次,或任意多次

“a*”
  • #匹配所有内容。包括空白行
“aa*”
  • #匹配至少包含有一个 a 的行
“aaa*”
  • 匹配最少包含两个连续 a 的字符串
“aaaaa*”
  • #匹配最少包含四个连续 a 的字符串

“.”匹配除了换行符外的任意一个字符

“s..d”
  • #“s..d”会匹配在 s 和 d 这两个字母之间一定有两个字符的字符串
“s.*d”
  • #匹配在 s 和 d 字母之间有任意字符的字符串
“.*”
  • #匹配所有内容

“^”匹配行首,“$”匹配行尾

“^M”
  • #匹配以大写“M”开头的行
“n$”
  • #匹配以“n”结尾的行
“^$”
  • #匹配空白行

“[]”匹配中括号中指定的任意一个字符,只匹配一个字符

“s[ao]id”
  • #匹配 s 和 i 字母中的任意一个字符,要么是 a,要么是 o
“[0-9]”
  • #匹配任意一个数字
“^[a-z]”
  • #匹配用小写字母开头的行

“[^]”匹配除中括号的字符以外的任意一个字符

“^[^a-z]”
  • #匹配不用小写字母开头的行
“^[^a-zA-Z]”
  • #匹配不用大写或小写字母开头的行
  • #在 php 中可以用“^[^A-z]”匹配不用大写或小写字母开头的行,因为在 php 语言中,大写字母排在小写字母前面,但在 Linux 中不行

“\”转义符

“\.$”
  • #匹配使用“.”结尾的行
  • #“.$”匹配以任意字符结尾的行

“\{n\}”表示其前面的字符恰好出现 n 次,若没有加定界符,则会匹配 n 次及 n 次以上

“a\{3\}”
  • #匹配 a 字母连续出现三次的字符串,包含了三次以上
“xc\{3\}u”
  • #匹配 x 和 u 之间恰好出现三次 c 的字符串,x 和 u 为定界字符
“[0-9]\{3\}”
  • #匹配包含连续的三个数字的字符串,恰好匹配需要定界符

“\{n,\}”表示其前面的字符出现不小于 n 次

“^[0-9]\{3,\}[a-z]”
  • #匹配最少用连续三个数字开头的行

“\{n,m\}”匹配其前面的字符至少出现 n 次,最多出现 m 次

“xc\{2,3\}u”
  • #匹配在字母 x 和字母 u 之间有最少一个 c,最多三个 c

例子:

grep “[0-9]\{4\}-[0-9]{2\}-[0-9]{2\}” 文件
  • 从文档中匹配规范的日期格式
grep “[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}”
  • #从文档中向外提取 ip 地址,但并不是精确匹配 ip
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值