shell正则表达式与⽂件名匹配
1) . : 匹配任意单ASCII 字符,可以为字母,或为数字。
2) 举例: ..XC..匹配deXC1t、23XCdf 等,.w..w..w.匹配rwxrw-rw-
⾏⾸以^匹配字符串或字符序列
1) ^ : 允许在⼀⾏的开始匹配字符或单词。
2) 举例: ^.01 匹配0011cx4、c01sdf 等,^d 匹配drwxr-xr-x、drw-r--r--等正则表达式任意内容
⾏尾以$匹配字符串或字符
1) $ : 在⾏尾匹配字符串或字符,$符号放在匹配单词后。
2) 举例: trouble$ 匹配以单词trouble 结尾的所有⾏
^$匹配所有空⾏
使⽤*匹配字符串中的单字符或其重复序列(与⽂件名置换中的"*"不⼀样)
1) * : ⼀个单字符后紧跟*,匹配0 个或多个此单字符。
2) 举例: compu*t 将匹配字符u ⼀次或多次,即匹配computer computing compuuute 等
1033* 可以匹配 101333 10133 1013444 等
3) 在正则表达式中使⽤"*",有时会产⽣⾮预期的结果。
使⽤\屏蔽⼀个特殊字符的含义
1) \ : ⽤来屏蔽⼀个元字符的特殊含义。因为有时在shell中元字符有特殊含义。\可以使其失去应有意义。
2) 举例: 在正则表达式中匹配以*.pas 结尾的所有⽂件: \*\.pas$
使⽤[]匹配属于⼀个范围或集合单个字符
1) [ ] : 匹配"[ ]"内的字符。可以是⼀个单字符,也可以是字符序列。可以使⽤"-"表⽰括号"[ ]"内字符序列范围,如⽤[1-5]代替[12345]。可以⽤逗号","分隔括号"[]"内的字符。
2) 当"^"符号当直接靠着"[",意指否定或不匹配括号"[]"⾥内容
3) 举例: [0-9]匹配任意⼀个数字;[a-z]匹配任意⼀个⼩写字母;[0-9A-Za-z]匹配任意字母或数字;
[C,c]omputer 匹配Computer 和computer;[^a-zA-Z]匹配任⼀⾮字母型字符
使⽤"\{\}"匹配模式结果出现的次数
1) pattern\{n\}
: 匹配模式pattern 出现n 次的情形。
2) pattern\{n,\} : 匹配模式pattern 最少出现n 次的情形。
3) pattern\{,m\} : 匹配模式pattern 最多出现m 次的情形。
4) pattern\{n,m\} : 匹配模式pattern 出现次数在n 与m 之间的情形。
5) 举例: A\{2\}B 匹配的值为AAB
A\{2,\}B 匹配的值可以是AAB 或AAAAAB,但不能匹配AB
A\{2,4\}B 匹配的值可以是AAB、AAAB、AAAAB,但不能匹配AB 或AAAAAB 等
[0-9]\{4\}CX[0-9]\{4\} 匹配数字出现4 次后跟CX,最后是数字出现4 次的情形
6) 实际上真正的格式是 {n} {n,} {,m} {n,m},只不过对"{"和"}"应⽤了Esacpe 字符"\"。
经常使⽤的正则表达式举例
[Ss]igna[lL] 匹配单词signal、signaL、Signal、SignaL
[Ss]igna[lL]\. 同上,但加⼀句点
^USER$ 只包含USER 的⾏
\. 带句点的⾏
^d..x..x..x 对⽤户、⽤户组及其他⽤户、组成员有可执⾏权限的⽬录
^[^l] 排除符号链接⽂件后的⽂件⽬录列表(即不是以"l"开始的⾏)
[yYnN] ⼤写或⼩写y 或n
^.*$ 匹配⾏中任意字符串
^......$ 包括6 个字符的⾏
[a-zA-Z] 任意单个字母
[a-z]* ⾄少⼀个⼩写字母
[^0-9\$] ⾮数字或美元符号
[123] 1 到3 中⼀个数字
\^q 以^q 开始⾏
^.$ 仅有⼀个字符的⾏
^\.[0-9][0-9] 以⼀个句点和两个数字开始的⾏
[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}
⽇期格式dd-mm-yyyy
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\} 类IP 地址格式
.* 匹配任意多个字符
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论