shell 正则表达式与文件名匹配

摘要:
经常使用的正则表达式的示例是[Ss]igna[lL]匹配单词signal、signal、signal、signal[Ss]igna[lL]。与上文相同,但带句点的^USER$仅包含USER行。带句点^d…x.x..x的行对用户、用户组以及其他用户和组成员^[^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地址格式nnn。不适用。不适用。不适用*匹配任意数量的字符

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 地址格式
                                               
nnn.nnn.nnn.nnn
.*             匹配任意多个字符

免责声明:文章转载自《shell 正则表达式与文件名匹配》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【深入浅出SpringBoot】RedisTemplate使用方法归纳虚拟化之KVM的安装篇下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

超好玩!10款神奇的字符图案 & 词汇云生成工具

  在这里,我们推荐10款惊人的字符图案生成工具。词云可以定义为词频的图形表示,而字符图案发生器是一个把数据,如文字和标签在以视觉和吸引人的方式展示的简单的工具。这些生成工具具有不同的功能,其中包括不同的字体,形状,布局和编辑功能。 您可能感兴趣的相关文章 10大流行的 Metro UI 风格 Bootstrap 主题 推荐35款精致的 CSS3 和 H...

178.vim 可视化模式(visual模式)

为了便于选取文本,VIM 引入了可视(Visual)模式。 可以使用以下三种模式: 用 v 命令进入的字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。 用 V 命令进入的行可视化模式(Linewise visual mode)。文本选择是以行为单位的。 用 ctrl-V 进入的块可视化模式(Blockwise...

正则表达式总结,正则表达式匹配不包含某个字符串

1、匹配a标签及其url: Regex regA = new Regex(@"<a[s]+[^<>]*href=(?:""|')([^<>""']+)(?:""|')[^<>]*>([^<>]+)</a>", RegexOptions.IgnoreCase); 说明:在上面的正则表达式...

bat批处理下如何像shell一样将命令执行的效果赋值给变量

在bat下如何实现像shell一样,把执行命令行后的结果赋值给变量呐? 刚开始,可真难为到我了。随着对bat批处理知识熟悉的加深。 学习到了!!! 举个 栗子: svnlook  uuid  C:Repository est          # 这行命令什么意思呐。它是svn服务器的命令(因为最近在搞svn的东西啦)。                  ...

win7为鼠标右键添加“用Photoshop编辑”选项

1、 确认你注册表编辑器下,HKEY_CLASSES_ROOTApplicationsPhotoshop.exe下的shell下的open下的command的右侧默认键值为 "D:Adobe Photoshop CCPhotoshop.exe" "%1"   上面部分是你自己的安装路径 2、 ①找到HKEY_CLASSES_ROOTSystemFileAs...

UE中使用正则表达式的一些技巧

以下是网上摘录的UE 技巧 1)删除空行: 替换 %[ ^t]++^p 为 空串 2)删除行尾空格: 替换 [ ^t]+$ 为 空串 3)删除行首空格: 替换 %[ ^t]+ 为 空串 4)每行设置为固定的4个空格开头: 替换 %[ ^t]++^([~ ^t^p]^) 为 " ^1" 5)每段设置为固定的4个空格开头: 替换 %[ ^t]+ 为 " "...