正则表达式的使用

0、前言:

1)grep与find的区别:

  • grep是查找文本,查找文件的内容;
  • find 是查找文件,在目录中查找文件。

2)我们会使用egrep (grep的扩展板extended grep)来查找文本。

3)正则表达式与语言无关,是独立的

4)grep 查找的结果是 只要包含 要查找的字符串的 都会显示。而是完全匹配。

5)正则表达式也是匹配文件的内容

1、正则表达式字符类格式

注意:字符类的都是一个字符。

 []匹配 []内任意一个字符;

[^xy] 有[]表示匹配任意一个字符,^表示该一位是非x,非y任意一个字符。

[[:alpha:]]  一般用[a-zA-Z]代替;

[[:digit::]]一般用[0-9]代替

注意:[0-9a-zA-Z]之间是没有空格的。

2、正则表达式数量限定符

 注意:数量限定符,可以匹配多个字符。

 ?*在正则表达式中与之前的含义不尽相同,在此处是表示匹配前一个字符的个数。

单写个?或+或* ,能显示全文,但是并不是匹配全文(字符没有变成红色)

 前面添加. 即匹配任意字符。

egrep 'h*' test.sh                  ----------->匹配h 、hh、hhh、hhhh等多个h;

egrep '[^h]' test.sh               ----------->匹配非h的字符,只要不是h就都能匹配

 当t.sh中包含没有h字符的行时,‘h*’和‘h?’会显示不包含h的行,‘h+’则不会。

3、正则表达式位置限定符

 

位置限定符可以使grep 有模糊查找变为精确的查找字符。 

\b用来查找单词

\B用来查找中间字母是xx的单词。

4、其他特殊字符 

 5、基础正则与扩展正则的区别:

基础正则 :Basic   正则  --------->使用 grep 

1)?+{}()            ------>为普通字符,需要加转义才行,----->表达式显得复杂

2)grep    -E      表达式                  ------------->加上-E参数,1)中的普通字符就不用转义了。

扩展正则:Extented 正则  ------->使用egrep  

------------>除了基础正则的方法2)外,可以使用  egrep (grep  -E)                ---->?+{}() 也不用转义了。

6、示例

注意:

1)需要使用双引号或者单引号括regexp表达式,否则的话,过滤的结果不对。

2)没有添加数量限定符的时候,字符串有几个符号,就会精确匹配几个字符。

egrep  'hello'  test.sh            --------------->test.sh中查找字符串 hello

3)egrep  的结果,显示的要找字符串的所在行,字符串会标红显示,会显示l和非o的两个字符。

4)egrep '[^o]' t.sh  会匹配所有不是o的一个字符

egrep '[0-9]{1,3}\.[0-9]*'  test.sh      ------------->匹配1-3数字.任意多的数字

egrep '^hello'  test.sh   --------->以hello开头的行

egrep 'hello$'  test.sh   --------->以hello结尾的行

egrep '^hello$'  test.sh   --------->匹配仅有hello的行(hello hello 为什么匹配不出来?

---------->原因是^$两个符号都有的意思是,二者中间的内容是hello,且开头是hello,末尾是hello 故只能是hello)

egrep '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' test.sh ------->以数字开头,以数字结尾的4个数字的 ip 地址;

^$实际上除指定格式外,也指定了行中的内容及个数;所以中间什么都没有即表示空行。

egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}$' test.sh ------->以数字开头,以数字结尾的4个数字的 ip 地址;//简写

egrep  '\<th' test.sh    ------>匹配以th开头的单词

eprep  'th\> test.sh   ----------》匹配以th结尾的单词

eprep  '\<th\> test.sh   ----------》匹配th单词

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值