017-linux正则表达式
一、单字符表示:
1、特定字符:某个具体的字符.
'1'
'a'
'\.'
2、范围内单个字符:单个字符[]
[0-9]
[259]
[a-z]
[abc]
[A-Z]
[ABC]
[a-zA-Z]
[,:/]
[.]
字符取反:
[^0-9]
[^123]
3、任意字符:
. 该字符具有特定含义
grep '.' /etc/passwd
4、边界字符:头尾字符
头: grep '^root' /etc/passwd
尾:grep 'false$' /etc/passwd
空行:^$
5、元字符:
字类字符:[a-zA-Z0-9_]=大小写字母+数字+下划线='\w'
grep '\w' /etc/passwd
非字类字符:'\W'
grep '\W' /etc/passwd
单词分隔符:'\b'
grep '\bx\b' /etc/passwd 表示x的前面和后面都是非单词的字母
二、字符串表示:一串字符的组合
'root'
'1000'
'm..c' 其中单个.表示一个字符
'[A-Z][a-z]'
'\b[0-9][0-9]\b'
重复:* + ?
*:表示0次或多次匹配前面的字符或表达式
+:表示1次或多次匹配前面的字符或表达式
?:表示0次或1次匹配前面的字符或表达式
{m,n}:重复特定次数:m~n次
grep 'se*' /etc/passwd -->s se see ....
grep 'se\+' /etc/passwd -->se see seee ...
grep 'se\?' /etc/passwd -->s se
grep '\(se\)*' /etc/passwd --> 空行 其他行 se sese ....
grep '\(se\)\+' /etc/passwd -->se sese sesese ...
grep '\(se\)\?' /etc/passwd -->空行 其他行 se
逻辑: |
三、任意字符串: .*
^r.* r开头的字符串
grep '^r.*' /etc/passwd
比较区别:
grep 'm..c' /etc/passwd
grep 'm.*c' /etc/passwd