1.使用句点"."匹配任意单字符
句点"."可以匹配任意单字符 。例如,如果要匹配一个字符串,以beg开头,中间夹一个任意字符串,那么可以表示为beg.n,"."可以匹配字符串头,也可以是中间任意字符。
例如在ls -l命令中,可以 匹配一定的权限:
...x..x..x
此格式匹配用户本身,用户组与其他组成成员的执行权限。
drwxrwxrw- -no match
-rw-rw-rw- -no match
-rwxrwxrwx match
文本过滤中,对于一个有10个字符的文本文件,要求前4个字符后为XC,匹配操作:....XC....
1234XC8984 -match
4567XXcnjk -no match
2.行首以"^"匹配字符串或者字符序列
^只允许在一行的开始匹配字符或者单词。例如,使用 ls -l命令,并匹配目录。之所以可以这样做是因为ls -l命令结果每一行第一个字符是d,即代表一个目录。
^d匹配以d开头的字符串
drwxrwxrw- -match
-rw-rw-rw- -no match
d--------- -match
^ofof匹配以ofof开头的字符串
ofofjikjkl -match
ofodsdss -no match
ofof -match
^...sxc..两种模式结合起来使用,
hdksxccckkk -match
jkk455hkdjsj -no match
jkksxcjkljklkl -match
3.行尾以"$"匹配字符串或者字符
$与^正相反,以...结尾,行尾匹配字符串或字符,$放在匹配单词后
hand$ 以hand结尾的所有行,
^$ 匹配所有空行
^.$ 匹配单字符行
4.使用"*"匹配字符串中的字符或字符串的重复序列
compu*t:匹配字符u一次或者多次:
computer
computing
compuuuute
10133*:匹配:
101333
10133
101344444
*还有一个神奇的地方就是[a-z]*能够匹配任意字母字符串,而不是一个任意字母字符,所以.*能够匹配所有的字符串。
5.使用"\"屏蔽一个特殊字符的含义
特殊字符在字符串中具有特殊的含义,但是有时候我们需要查找这些特殊字符或者字符串可以使用"\"屏蔽其匹配含义
特殊字符:$ . ' " * [ ] ^ | () \ + ?
\. 匹配"."而不是任意单字符
\^匹配"^"
\*\.make匹配*.make
6.使用 []匹配一个范围或集合
使用[]匹配特定字符串或者字符串集,可以使用逗号将括弧内要匹配的不同字符串分开,但并不强制要求这样做,这样做可以增加模式的可读性
使用"-"表示一个字符串范围,表明字符串范围从"-"左边字符开始,"-"右边字符结束。
如果熟知一个字符串匹配操作,应该经常使用[]模式
[0123456789]或[0-9] 匹配任意一个数字
[a-z] 匹配任意小写字母
[A-Za-z] 匹配任意字母
[A-Za-z0-9] 匹配任意字母或者数字
s[a-z A-Z] 匹配一个以s开头中间有一个任意字母,以t结尾的字符串
s[a-z]t 匹配一个以s开头中间有一个任意小写字母,以t结尾的字符串
[Cc]omputer Computer或者computer
[^A-Za-z] 匹配任一非字母型字符
[^0-9] 匹配任一非数字
7.使用\{\}匹配模式结果出现得到次数
使用"*"可匹配所有匹配结果任意次,但如果指定次数,就应使用\{\},此模式有三种形式,即:
pattern\{n\} 匹配模式出现n次
pattern\{n,\} 匹配模式出现最少n次
pattern\{n,m} 匹配模式出现n到m次之间
A\{2\}B 匹配AAB
A\{4,\}B 结果AAAAB或者AAAAAAAAAB...
例:
4567XC4567
3895XX7884
0011XA4564
9999XC4545
[0-9]\{4\}X[XAC][0-9]\{4\}可以匹配上面所有的字符串