【linux】学习笔记Chap_20_regular_expression
正则表达式
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 | grep "^lthero" file |
$(dollar)
功能:
- 匹配 一行 以pattern 结尾
1 | grep "lthero$" file |
- 如果结合 ^ $
1 | grep "^lthero$" file |
\< 以pattern开头
功能:
- 匹配以pattern开始
如果只知道要查找的内容以pattern开始
1 | grep "\<kn" file |
\> 以pattern结尾
功能:
- 匹配以pattern结尾
1 | grep "ow\>" file |
- 将上面两个结合
1 | grep "\<know\>" file ' |
则开始精准查找
knows 都不会匹配 只查文章内全部的know。而**^pattern&将匹配pattern独占的行**
- 在Linux中 可以用\b 代替 \<和\>
1 | grep "\bknow\b" file |
往往用 -w word选项精准查找指定单词
1 | grep -w 'cat' file |
[list]
- [list] 匹配list中的字符
- 如: [0-9] [a-z]
1 | grep 'li[cs]en[cs]e' file |
- [^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 | grep '21[:alpha:]' file |
[:alnum:]
- 大小写、数字 范围 A-Za-z0-9
1 | grep '[a-zA-Z0-9]' file |
[:digit:]
- 只有数字 等同 [0-9]
1 | grep '[:digit:][0-9]' file |
[:blank:]
- 指定空格和tab
[:punct:]
- 标点符号
综合
1 | grep '[[:upper:][:upper:][:digit:][:lower:]]' file |
* zero more
功能:
- 前一个匹配字符出现0次以上 (用这个可能将全文内容都匹配了)
前一个匹配字符可能是[a-z] [0-9]等等
1 | grep 'L[a-z]*' file |
grep ‘.*’ file 则将匹配任意字符 出现任意次,即:全文
等同于 .{0,}
+ one more
功能:
- + 出现1次以上,+ plus 比*多一次
1 | grep 'var[0-9]+' file |
等同 {1,}
? zero or one
功能:
- 匹配前一个字符出现1次或0次,如 colou?r u可以有,可以没有
等同 {0,1}
{n,m}
- {n} 出现n次
- {n,}出现n次以上
- {n,m}出现 n 到 m次
- {,m}小于m次
1 | grep '\<[0-9]{2,3}\>' file |
特殊符号
对于特殊符号本身 如 *\
如果想匹配\
本身 前面再加个\
如 grep ‘\\\*’ file 就是匹配一个\``*
1 | \\\*.*[A-Za-z]+\$ |
-
\\ one \ 斜杠
-
\* one * 星
-
.* 任意字符0次以上
-
[A-Za-z]+ 字母一次以上
-
\$ 匹配$
1 | \*AABBCC22zzzz$ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 lthero!
评论