正则表明式基础以及grep的简要利用

正则表明式基础,正则表明式

正则表达式基础以及grep的简单利用

 

1 定义

正则表明式是您所定义的情势模板,Linux可以用它来过滤文本。Linux工具(比如grep、sed、gawk)可以在拍卖数据时拔取正则表明式对数据开展情势匹配。借使数额匹配格局,它就会被接受并一发处理;如若数量不般配,它就会被滤掉。

 

澳门金沙国际 1

2 正则表明式的条件

(1)正则表达式形式都分别轻重缓急写。(2)可以使用空格,数字。(3)空格和其余字符并不曾什么分别。

3 特殊字符

包括 * [ ] ^ $ ( ) \ + ? | { }

    要动用特殊字符,必须转义,在转义字符时,要求在它面前加个特殊字符来告诉正则表明式引擎应该将接下去的字符当做常常的公文字符,那些特殊符号就是反斜线(\)。

4 锚字符

    ^ 行首锚定

    $ 行尾锚定

澳门金沙国际 2

    \b \正则表明式,正则表明式基础。b 匹配词首和词尾

  \< \> 匹配词首和词尾

澳门金沙国际 3

5 grep 基本用法

    -v    取反,找出不带有关键字的行

    -i    忽略字符大小写

    -n    显示匹配的行号

    -c    计算匹配到的行数

    -o    仅突显匹配到的字符串

    -w    匹配整个单词

    -A     n匹配的前n行

    -B    n 关键字的后n行

    -C    n 关键字的前后各n行

澳门金沙国际 4

    -e    达成四个挑选的逻辑或提到

澳门金沙国际 5

     -E === egrep 协助扩张的正则表达式

  -F === fgrep 不扶助正则表明式

6 字符匹配规则

    .        配任意单个字符

    [abc]    匹配a,b,c中单个字符

    [^abc]    匹配除a,b,c之外的字符

    [:alnum:]    匹配数字和字符

    [:alpha:]    匹配英文大小写字母a-z,A-Z

    [:lower:]    匹配小写字母

    [:upper:]    匹配大写字母

    [:space:]    匹配空格

    [:digit:]    匹配十进制数字

7 匹配次数

    *    匹配前边的字符任意次数,0至正无穷

    .*    匹配任意字符任意次数

    \?    匹配前边字符0次依旧三遍

    \+    匹配前面字符至少2次

    \{n\}    配后面字符n次

    \{m,n\}    匹配前面字符出现m至n次

    \{,n\}    匹配后面字符最多出现n次

    \{n,\}    匹配前边字符至少n次

8 增加正则表明式 egrep

次数匹配,和骨干正则表明式类似,就是少了转义字符(\)

*     匹配前面字符任意次

?    匹配前边字符0次或二次

+    匹配前边字符一遍或频仍

{m}    匹配前边字符m 次

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

9 用到管道(|)

    管道允许你在检查数据时,用逻辑或措施指定正则表明式引擎要用的多少个恐怕五个情势,假诺其余三个情势匹配了数量文本,文本就通过,假诺没有格局匹配,则数据流文本匹配战败。

澳门金沙国际 6

10 分组

将匹配规则分成区其余组 使用 1 2
3..等数字去标识,便于前面使用相同规则的时候可以间接饮用

\(root\)\+\1

\(string1\+\(string2\)*\)

\1 string1\+\(string2\)*

\2 string2

找出/etc/passwd用户名同shell名的行

cat /etc/passwd | grep "^\(\b[[:alnum:]]\+\b\):.*\1$"
grep "^\<\(.*\)\>.*\1$" /etc/passwd
cat /etc/passwd | egrep "^(\b[[:alnum:]]+\b):.*\1$"

澳门金沙国际 7

 

正则表明式基础以及grep的简约利用 1 定义
正则表达式是你所定义的方式模板,Linux可以用它来过滤文本。L…

正则表达式基础以及grep的回顾利用

正则表明式

在Linux当中,大家经常使用文本处理工具完毕无数作用,比如文本过滤工具grep等等,而那时往往须求正则表达式的扶助。
  正则表明式:由一类特殊字符及文本字符所编写的格局,其中有个别字符(元字符)不意味着字符字面意义,而表示控制或通配的功能。
  
  正则表明式分类:基本正则表明式、扩张正则表明式

元字符分类:字符匹配、匹配次数、地点锚定、分组

澳门金沙国际 8

正则表明式

 

 

一 、基本正则表明式元字符

1 定义

1 定义

(a)字符匹配
  • . 匹配任意单个字符
  • [] 匹配钦点范围内的自由单个字符
  • [^] 匹配指定范围外的私下单个字符
  • [:alnum:] 字母和数字
  • [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
  • [:lower:] 小写字母 [:upper:] 大写字母
  • [:blank:] 空白字符(空格和制表符)
  • [:space:] 水平和垂直的空白字符(比[:blank:]带有的限量广)
  • [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
  • [:digit:] 十进制数字 [:xdigit:]十六进制数字
  • [:graph:] 可打印的非空白字符
  • [:print:] 可打印字符
  • [:punct:] 标点符号

正则表明式是你所定义的情势模板,Linux可以用它来过滤文本。Linux工具(比如grep、sed、gawk)可以在处理多少时拔取正则表明式对数码进行方式匹配。尽管数量匹配情势,它就会被接受并一发处理;若是数据不包容,它就会被滤掉。

正则表达式是您所定义的格局模板,Linux可以用它来过滤文本。Linux工具(比如grep、sed、gawk)可以在拍卖数量时拔取正则说明式对数据开展格局匹配。如若数额匹配情势,它就会被接受并进而处理;假设数量不般配,它就会被滤掉。

(b)匹配次数
  • *匹配后面的字符任意次,包涵0次(贪婪格局:尽恐怕长的非常)
  • .*任意长度的随机字符
  • \?匹配其前方的字符0或二遍
  • \+匹配其面前的字符至少三回
  • \{n\} 匹配前边的字符n次
  • \{m,n\} 匹配前边的字符至少m次,至多n次
  • \{,n\} 匹配前边的字符至多n次
  • \{n,\} 匹配前边的字符至少n次

 

 

(c)地点锚定
  • ^ 行首锚定,用于情势的最左侧
  • $ 行尾锚定,用于方式的最右
  • ^PATTE奇骏N$ 用于方式匹配整行
  • ^$ 空行
  • ^[[:space:]]*$ 空白行
  • < 或 \b 词首锚定,用于单词情势的左边
  • \> 或 \b 词尾锚定;用于单词形式的左边
  • <PATTEKoleosN> 匹配整个单词

澳门金沙国际 9

澳门金沙国际 10

(d)分组

\(\) 将七个或多个字符捆绑在一块儿,当作二个整机举办拍卖
  如:
*\(string1\+\(string2\)\),此处括号把string2作为1个分组,string1\+\(string2\)\*用作3个大的分组。

分组括号中的形式匹配到的内容会被正则表达式引擎记录于其中的变量中,这些变量的命名格局为:
\1, \2, \3, …
  \1
表示从左边起率先个左括号以及与之匹配右括号之间的情势所匹配到的字符,一回类推
  照旧地点的例证: \(string1\+\(string2\)\)
  \1: string1\+\(string2\)

  \2: string2
  后向引用:引用前边的分组括号中的格局所匹配字符, 而非
方式本人
  或者: |
  示例: a|b: a或b C|cat: C或cat (C|c)at:Cat或cat

2 正则表明式的规则

2 正则表明式的条件

二 、扩大正则表达式

egrep = grep -E
  egrep [OPTIONS] PATTERN [FILE…]

(1)正则表达式情势都分别轻重缓急写。(2)可以行使空格,数字。(3)空格和其他字符并不曾什么界别。

(1)正则表明式形式都分别轻重缓急写。(2)可以采用空格,数字。(3)空格和其余字符并从未什么样界别。

(a)字符匹配
  • .任意单个字符
  • [] 钦定范围的字符
  • [^] 不在指定范围的字符

3 特殊字符

3 特殊字符

(b)匹配次数
  • *:匹配前边字符任意次
  • ?: 0或1次
  • +: 二次或频仍
  • {m}:匹配m次
  • {m,n}:至少m,至多n次

包括 * [ ] ^ $ ( ) \ + ? | { }

包括 * [ ] ^ $ ( ) \ + ? | { }

(c)地方锚定
  • ^ :行首
  • $ :行尾
  • \<, \b :语首
  • \>, \b :语尾

    要采用特殊字符,必须转义,在转义字符时,需求在它面前加个特殊字符来告诉正则表明式引擎应该将接下去的字符当做平常的文书字符,那几个特殊符号就是反斜线(\)。

    要选拔特殊字符,必须转义,在转义字符时,需求在它前面加个特殊字符来告诉正则表明式引擎应该将接下去的字符当做普通的文本字符,这么些特殊符号就是反斜线(\)。

(d)分组
  • ()
    后向引用: \1, \2, …
  • 或者:
    a|b:a或b
    C|cat:C或cat
    (C|c)at:Cat或cat

4 锚字符

4 锚字符

    ^ 行首锚定

    ^ 行首锚定

    $ 行尾锚定

    $ 行尾锚定

澳门金沙国际 11

澳门金沙国际 12

    \b \b 匹配词首和词尾

    \b \b 匹配词首和词尾

  \< \> 匹配词首和词尾

  \< \> 匹配词首和词尾

澳门金沙国际 13

澳门金沙国际 14

5 grep 基本用法

5 grep 基本用法

    -v    取反,找出不含有关键字的行

    -v    取反,找出不带有关键字的行

    -i    忽略字符大小写

    -i    忽略字符大小写

    -n    呈现匹配的行号

    -n    显示匹配的行号

    -c    统计匹配到的行数

    -c    计算匹配到的行数

    -o    仅浮现匹配到的字符串

    -o    仅突显匹配到的字符串

    -w    匹配整个单词

    -w    匹配整个单词

    -A     n匹配的前n行

    -A     n匹配的前n行

    -B    n 关键字的后n行

    -B    n 关键字的后n行

    -C    n 关键字的前后各n行

澳门金沙国际 ,    -C    n 关键字的左右各n行

澳门金沙国际 15

澳门金沙国际 16

    -e    完毕八个选用的逻辑或涉嫌

    -e    完毕多少个选用的逻辑或关系

澳门金沙国际 17

澳门金沙国际 18

     -E === egrep 协理扩充的正则表明式

     -E === egrep 帮忙扩展的正则表明式

  -F === fgrep 不帮衬正则表达式

  -F === fgrep 不援救正则表明式

6 字符匹配规则

6 字符匹配规则

    .        配任意单个字符

    .        配任意单个字符

    [abc]    匹配a,b,c中单个字符

    [abc]    匹配a,b,c中单个字符

    [^abc]    匹配除a,b,c之外的字符

    [^abc]    匹配除a,b,c之外的字符

    [:alnum:]    匹配数字和字符

    [:alnum:]    匹配数字和字符

    [:alpha:]    匹配英文大小写字母a-z,A-Z

    [:alpha:]    匹配英文大小写字母a-z,A-Z

    [:lower:]    匹配小写字母

    [:lower:]    匹配小写字母

    [:upper:]    匹配大写字母

    [:upper:]    匹配大写字母

    [:space:]    匹配空格

    [:space:]    匹配空格

    [:digit:]    匹配十进制数字

    [:digit:]    匹配十进制数字

7 匹配次数

7 匹配次数

    *    匹配前面的字符任意次数,0至正无穷

    *    匹配前边的字符任意次数,0至正无穷

    .*    匹配任意字符任意次数

    .*    匹配任意字符任意次数

    \?    匹配前边字符0次依旧3遍

    \?    匹配后边字符0次依旧2遍

    \+    匹配前边字符至少3遍

    \+    匹配前面字符至少3遍

    \{n\}    配前面字符n次

    \{n\}    配前边字符n次

    \{m,n\}    匹配前边字符出现m至n次

    \{m,n\}    匹配前边字符出现m至n次

    \{,n\}    匹配后边字符最多出新n次

    \{,n\}    匹配前边字符最多出新n次

    \{n,\}    匹配前边字符至少n次

    \{n,\}    匹配前面字符至少n次

8 扩大正则表达式 egrep

8 增加正则表明式 egrep

次数匹配,和着力正则表明式类似,就是少了转义字符(\)

次数匹配,和核心正则表明式类似,就是少了转义字符(\)

*     匹配前边字符任意次

*     匹配前边字符任意次

?    匹配前边字符0次或二回

?    匹配后边字符0次或二次

+    匹配前边字符一遍或频仍

+    匹配前边字符一遍或频仍

{m}    匹配前边字符m 次

{m}    匹配后面字符m 次

{m,n}匹配前边字符m到n 次

{m,n}匹配前边字符m到n 次

9 行使管道(|)

9 用到管道(|)

    管道允许你在检查数据时,用逻辑或方法内定正则表达式引擎要用的三个恐怕三个方式,借使别的1个情势匹配了多少文本,文本就因此,尽管没有格局匹配,则数据流文本匹配失利。

    管道允许你在检查数据时,用逻辑或措施指定正则表明式引擎要用的七个或然多少个形式,假若其余二个格局匹配了多少文本,文本就通过,借使没有格局匹配,则数据流文本匹配失利。

澳门金沙国际 19

澳门金沙国际 20

10 分组

10 分组

将匹配规则分成差别的组 使用 1 2
3..等数字去标识,便于后边使用同一规则的时候可以直接饮用

将匹配规则分成差其他组 使用 1 2
3..等数字去标识,便于前面使用相同规则的时候可以平素饮用

\(root\)\+\1

\(root\)\+\1

\(string1\+\(string2\)*\)

\(string1\+\(string2\)*\)

\1 string1\+\(string2\)*

\1 string1\+\(string2\)*

\2 string2

\2 string2

找出/etc/passwd用户名同shell名的行

找出/etc/passwd用户名同shell名的行

cat /etc/passwd | grep "^\(\b[[:alnum:]]\+\b\):.*\1$"
grep "^\<\(.*\)\>.*\1$" /etc/passwd
cat /etc/passwd | egrep "^(\b[[:alnum:]]+\b):.*\1$"
cat /etc/passwd | grep "^\(\b[[:alnum:]]\+\b\):.*\1$"
grep "^\<\(.*\)\>.*\1$" /etc/passwd
cat /etc/passwd | egrep "^(\b[[:alnum:]]+\b):.*\1$"

澳门金沙国际 21

澳门金沙国际 22

 

 

相关文章