加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

grep以及正则表达式

发布时间:2020-12-13 22:19:31 所属栏目:百科 来源:网络整理
导读:grep 以及正则表达式 正则表达式是基本的文本处理常识,理解和掌握好grep以及正则表达式对进行文本处理尤为重要 Grep 根据模式(文本字符和正则表达式的元字符组合而成匹配条件)搜索文本,并将符合模式的文本行显示出来。 1.1grep 家族: grep :基本正则表

grep以及正则表达式

正则表达式是基本的文本处理常识,理解和掌握好grep以及正则表达式对进行文本处理尤为重要

  1. Grep

    根据模式(文本字符和正则表达式的元字符组合而成匹配条件)搜索文本,并将符合模式的文本行显示出来。

1.1grep家族:

grep:基本正则表达式使用的命令

egrep:扩展正则表达式使用的命令

fgrepfast grep):不支持正则表达式,在没有正则表达式的字符串中的使用效率非常高,cup资源消耗少

1.2grep命令格式

grep [options] PATTERN [FILE...]

wKiom1Z4BeaAHDfsAAAnGMrsKhE658.png

1.2.1option

-i忽略大小写

--color:对匹配出来的字符加颜色

wKiom1Z4BhnwPMAmAAArY52CmhQ548.png

-v: 显示没有被模式匹配到的行

wKioL1Z4BlLz-L3dAACIoBkHapg003.png

-o:只显示被模式匹配到的字符串

wKioL1Z4BnvxmNKdAAAvW7-3Cu8731.png

-E: 使用扩展正则表达式时候使用,grep ?E=egrep

-A #: 显示后面的行

-B #:显示前面的行

-C #:显示前后的行

比如:显示、/proc/cpuinfo下面的内容

wKiom1Z4BqmQB5y3AADIq-TJEts267.png

-A:

wKioL1Z4BtHRgqtPAAA5xmqTbxs455.png

-B:

wKiom1Z4BtjTBy3mAAAs7IFTddY786.png

-C:

wKioL1Z4Bv-x67UXAAAzn53fKjI435.png

2.正则表达式:REGular EXPression,REGEXP

BasicREGEXP:基本

ExtendedREGEXP:扩展

2.1基本正则表达式

2.1.1字符匹配

.: 匹配任意单个字符

[]: 匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

字符集合:[:digit:],[:lower:],[:upper:],[:punct:],[:space:],[:alpha:],[:alnum:]

wKioL1Z4BzDR4N6LAABIKhYsYn8738.png

a.b

wKiom1Z4BzyxIml0AAAxduBq-HY990.png

[]:

wKioL1Z4B2zBaSvoAACWP98Tw4U140.png

[^]:

wKioL1Z4B3_jqdGtAACeJl3UdWs209.png

2.1.2匹配次数(贪婪模式):

*: 匹配其前面的字符任意次

wKiom1Z4B6axuhycAAA5b45ixfw087.png

.*: 任意长度的任意字符(任何以a开头和以b结尾的字符)

wKiom1Z4CCnzXhWRAAAke81HirM303.png

?: 匹配其前面的字符1次或0

wKiom1Z4CEHz53yMAAApbuF4xms392.png

{m,n}:匹配其前面的字符至少m次,至多n次,当最多次数不限制时n可以省略,m的最小值为0而且不可以省略。

{1,}:至少一次

{0,3}:至多3

wKiom1Z4CFzSPpiwAAA32E95XSI669.png

2.1.3位置锚定:

^: 锚定行首,此字符后面的任意内容必须出现在行首

wKiom1Z4CHWB2ewxAAAmuUl6hVM737.png

$: 锚定行尾,此字符前面的任意内容必须出现在行尾

wKioL1Z4CJniaeshAAA01uLNvTo355.png

^$: 空白行

wKiom1Z4CK2xeNkkAAAosA9niRY349.png

表示没有空白行

&;b: 锚定词首,其后面的任意字符必须作为单词首部出现

wKioL1Z4CN6RzH1HAABB3fzJG6U706.png

wKioL1Z4CPfAjBbyAAAt6vRmwtI155.png

wKioL1Z4CQuDtItqAAA1Z7C7Zzc013.png

&;b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现

wKioL1Z4CZ6jcahmAAAyaj_QeLk627.png

wKiom1Z4Cb2gZOvVAAAmoajvJzQ633.png

精确匹配某个单词

wKiom1Z4CdPyQMygAAAfOtgw4FE876.png

wKioL1Z4CjKwcw9UAAAY6UDR27Y435.png

分组:

()

(ab)*

后向引用

1: 引用第一个左括号以及与之对应的右括号所包括的所有内容

2: 引用第二个左括号以及与之对应的右括号所包括的所有内容

3: 引用第三个左括号以及与之对应的右括号所包括的所有内容


wKiom1Z4CmDQyDDeAABBo8eA7rA105.png

wKioL1Z4CnWwsj2nAAAvuSokJlg277.png

wKioL1Z4CnXSOovgAAAvtGGZ14Y922.png

wKiom1Z4CmXxicsuAAAxEj-htWg037.png


2.2拓展正则表达式

2.2.1字符匹配:(和基本正则表达式一样)

.

[]

[^]

2.2.2次数匹配:

*: (和基本正则表达式一样)

?:(和基本正则表达式少了

+: 匹配其前面的字符至少1

下图至少匹配一个空白字符

wKioL1Z4C2jQskB3AAA_WcNx3AE518.png

{m,n}(和基本正则表达式比较少了)

2.2.3位置锚定:

^

$

&;

&;

(和基本正则表达式一样)

分组:

():分组

1,2,3,...n

或者:

|: or

C|cat: Catcat Ccat(正确)


wKioL1Z4C4jzo4eNAABAzVLeINY022.png

wKiom1Z4C3iy3plkAAAiKlvSVkM386.png

wKioL1Z4C7uRvpzfAAAhw8jMvFM403.png

wKioL1Z4C77yu01hAAA4Hj4WTgQ254.png

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读