正则表达式

grep工具

  1. grep是Linux中常用的文本过滤工具,按照关键字或者正则表达式进行过滤,它是按行匹配的,通常是Linux中处理文本的第一步。
  2. grep工具采用的是贪婪匹配,即:匹配当前行中所有的匹配内容。
  3. grep工具如果匹配到了,它的退出码是0,如果没有匹配到,它的退出码是1。
  4. 选项
-i 忽略大小写的不同
-n 同时输出行号
-v 反向选择,显示出没有'搜寻字符串'内容的一行
-o 只输出文件中匹配到的部分
-q 安静模式匹配
-r/R 递归查找
-E 使用扩展正则匹配
--color 将匹配得到的内容进行语法高亮

正则表达式

1. 概念
  1. 正则表达式是用于描述一组字符串特征的模式,用来匹配特定的字符串,通过特殊字符+普通字符来进行描述,从而达到文本匹配目的;
  2. 正则表达式被集成于各种文本编辑器中和文本处理工具中;
  3. 正则表达式基本与语言无关。
  4. 正则匹配有三类:基本的正则表达式、扩展的正则表达式、Perl的正则表达式
2. 正则表达式的基本要素
  1. 字符类
  2. 数量限定符
  3. 位置限定符
  4. 特殊符号
3. 字符类
字符含义举例
.匹配任意一个字符a.可以匹配ab、a1等
[]匹配括号中的任意一个字符[ab2]c可以匹配ac、bc、2c
-在[]内表示字符范围[0-9a-f]a可以匹配3a、ba
^在[]内的开头,匹配除括号中的字符之外的任意一个字符[^ab]2可以匹配x2、z2,但是不可以匹配a2、b2
[[:xxx:]]grep工具预定义的一些命令字符类[[:alpha:]]匹配一个字母,[[:digit:]]匹配一个数字

这里写图片描述

4. 数量限定符
字符含义举例
?紧跟在它前面的单元应匹配零次或一次[0-9]?a匹配1a、2a、a
+紧跟在它前面的单元应匹配一次或多次[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+com匹配一个email地址
*紧跟在它前面的单元应匹配零次或多次[a-zA-Z_]+[a-zA-Z_0-9]*匹配C语言的标识符
{N}紧跟在它前面的单元应精确匹配N次[1-9][0-9]{2}匹配100到999的整数
{N,}紧跟在它前面的单元应匹配至少N次[1-9][[0-9]{2,}匹配100以上的整数
{,M}紧跟在它前面的单元应匹配最多M次[0-9]{,1}相当于[0-9]
{N,M}紧跟在它前面的单元应匹配至少N次,最多M次([0-9]{1,3}\.){3}[0-9]{1,3}匹配IP地址

这里写图片描述
这里写图片描述
上面的例子a{,3}中,在相关的文档中并未出现,应该是错误或者废弃的用法

5. 位置限定符
字符含义举例
^匹配行首的位置^Content匹配位于一行开头的Content
$匹配行末的位置;$匹配位于一行结尾为;号, ^$匹配空行
\<匹配单词开头的位置\
>匹配单词结尾的位置p>匹配以p结尾的单词
\b匹配单词开头或结尾的位置\bat\b匹配at,不匹配cat,batch等
\B匹配非单词开头和结尾的位置\Bat\B匹配battery,不匹配attend等

这里写图片描述

  1. \b用来限定目标串中是否有以指定字符串开头的单词,称之为词界,\b称为非词界
  2. ^$确定目标串出现的位置,称之为锚点
6. 特殊符号
字符含义举例
\转义字符\<即将普通字符<转义为单词开头的位置
()将正则表达式的一部分括起来组成一个单元
|连接两个子表达式,表示或的关系

基本正则表达式和扩展正则表达式的区别:
  在基本正则的规范下,?+{}|()应解释为普通字符,要表示上述特殊含义则需要加\转义。反之,在扩展规范下,?+{}|()应该被理解为特殊含义,要取字面意义,也要对其进行\转义。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值