正则表达式

Lthero hello Lthero lthero He is lthero he have lthero.cn lthero.cn is the best web

.(dot)

功能:

  • 匹配任何字符,除了新的一行,一个dot只代表一个字符

例如 lth开头  中间两个任意字符 o结尾

1
grep 'lth..o' file

可以匹配

lthero lthhho lthwwo ltheeo

^

功能:

  • 匹配 一行 以 pattern 开始
1
2
3
4
grep "^lthero" file
#结果
lthero
lthero.cn is the best web

$(dollar)

功能:

  • 匹配 一行 以pattern 结尾

1
2
3
4
grep "lthero$" file
#结果
lthero
He is lthero

  • 如果结合 ^ $
1
2
3
4
5
grep "^lthero$" file
#则匹配 pattern独占的行,以lthero开头,以lthero结尾
#结果
lthero
grep "^$" file 可以匹配所有空行

\< 以pattern开头

功能:

  • 匹配以pattern开始

如果只知道要查找的内容以pattern开始

1
2
3
grep "\<kn" file
#结果
know

\> 以pattern结尾

功能:

  • 匹配以pattern结尾

1
2
3
grep "ow\>" file
#结果
know
  • 将上面两个结合
1
grep "\<know\>" file '

开始精准查找

knows 都不会匹配 只查文章内全部的know。而**^pattern&将匹配pattern独占的行**

  • 在Linux中 可以用\b 代替 \<和\>
1
2
grep "\bknow\b" file
grep "\<know\>" file

往往用 -w word选项精准查找指定单词

1
grep -w 'cat' file

[list]

  • [list] 匹配list中的字符
  • 如: [0-9] [a-z]

1
2
3
grep 'li[cs]en[cs]e' file
#结果
licence license lisense lisence

  • [^list] 匹配不在list中的字符
  • [^0-9] [^a-z]
  • [^a-z]等同[^[:lower:]]  只匹配小写字母

[:lower:]

  • [:lower:] lowercase letters 范围 a-z,等同[a-z]

[:upper:]

  • [:upper:] uppercase letters 范围 A-Z 等同[A-Z]

[:alpha:]

  • [:alpha:] 大小写字母 范围 A-Za-z      等同[A-Za-z]

1
2
3
grep '21[:alpha:]' file
#查找21开始,带有一个字母(不分大小写)
21a 21b 21C ....

[:alnum:]

  • 大小写、数字 范围 A-Za-z0-9
1
2
3
grep '[a-zA-Z0-9]' file
#查看
A a 8 单个字母或数据即可

[:digit:]

  • 只有数字  等同 [0-9]

1
2
grep '[:digit:][0-9]' file
#查看00----99

[:blank:]

  • 指定空格和tab

[:punct:]

  • 标点符号

综合

1
2
3
4
5
grep '[[:upper:][:upper:][:digit:][:lower:]]' file

#在file中找 符合 大写&大写&数字&小写 内容

LT5e

* zero more

功能:

  • 前一个匹配字符出现0次以上 (用这个可能将全文内容都匹配了)

前一个匹配字符可能是[a-z] [0-9]等等

1
2
3
grep 'L[a-z]*' file 
#可能匹配到
L Lt Lth Lthe Lther Lthero

grep ‘.*’ file 则将匹配任意字符 出现任意次,即:全文

等同于 .{0,}

+ one more

功能:

  • + 出现1次以上,+ plus 比*多一次

1
2
3
grep 'var[0-9]+' file
#可以匹配到
thing var1

等同 {1,}

? zero or one

功能:

  • 匹配前一个字符出现1次或0次,如 colou?r u可以有,可以没有

等同 {0,1}

{n,m}

  • {n} 出现n次
  • {n,}出现n次以上
  • {n,m}出现 n 到 m次
  • {,m}小于m次

1
2
3
grep '\<[0-9]{2,3}\>' file
#表示匹配一个二或三位数字
03 123 000

特殊符号

对于特殊符号本身 如 *\

如果想匹配\ 本身 前面再加个\

如 grep ‘\\\*’ file 就是匹配一个\``*

1
\\\*.*[A-Za-z]+\$
  • \\ one \ 斜杠

  • \* one * 星

  • .* 任意字符0次以上

  • [A-Za-z]+ 字母一次以上

  • \$ 匹配$

1
\*AABBCC22zzzz$