通配符家族简介
2015-12-27 20:53
232 查看
通配符和正则表达是常引起混淆的一组概念。因此参考wikipedia和其他一些通用的linux教材,视图将其弄明白。
通配符的概念据说起源于一个用于将文件路径(以通配字符为参数)转化为可执行命令的函数glob(),是'global command'的缩写,现在这个函数已经成为了shell里的库函数。但平时我们所谓的通配符对应的应该是'wildcard',也就是这个函数中的通配字符参数。
一般通配符(wildcard)用于聚集(glob)以系列名字类似的文件,而正则表达式(regexps)则常用于字符串的模式匹配。
通配字符一般只包括任意多字符通配符(*), 任意单字符通配符(?) 和 指定单字符通配符[]。但由于其不支持字符完备集的约束,因此没有被包含在正则表达式的范围内。 只能处理那些较为简单的匹配任务。
unix系统中的通配符增加了取反符[!],也有用[^]的。
dos和windows中的cmd中不支持[],而只能出现在模式的尾部。
类SQL语言中like关键字中的类通配符用_取代了?, %取代了
正则表达式中用.替代了?, .*替代了*,另外正则表达式支持局部匹配,而正则表达式仅支持整个字符串的匹配。
正则表达式又分为基本型和扩展型,其基本的规则如下:
基本正则表达式
元字符
. 任意单个字符
[] 任意匹配的单个字符
[^] 任意不匹配的单个字符
次数
* 任意多次
? 0次或1次
\ {m, n\ } 至少m次, 至多n次
位置
^ 行首
$ 行尾
< 词首
> 词尾
分组
\ ( \ ) 定义分组
\n 引用第n个分组
扩展正则表达式
元字符: 同
次数匹配:
+ 至少一次
? 不需要加
不需要加\
位置锚定:同
分组
() 不需要小括号
\1 同
逻辑符号 c|cat表示c或者cat
| 或者
通配符的概念据说起源于一个用于将文件路径(以通配字符为参数)转化为可执行命令的函数glob(),是'global command'的缩写,现在这个函数已经成为了shell里的库函数。但平时我们所谓的通配符对应的应该是'wildcard',也就是这个函数中的通配字符参数。
一般通配符(wildcard)用于聚集(glob)以系列名字类似的文件,而正则表达式(regexps)则常用于字符串的模式匹配。
通配字符一般只包括任意多字符通配符(*), 任意单字符通配符(?) 和 指定单字符通配符[]。但由于其不支持字符完备集的约束,因此没有被包含在正则表达式的范围内。 只能处理那些较为简单的匹配任务。
unix系统中的通配符增加了取反符[!],也有用[^]的。
dos和windows中的cmd中不支持[],而只能出现在模式的尾部。
类SQL语言中like关键字中的类通配符用_取代了?, %取代了
正则表达式中用.替代了?, .*替代了*,另外正则表达式支持局部匹配,而正则表达式仅支持整个字符串的匹配。
正则表达式又分为基本型和扩展型,其基本的规则如下:
基本正则表达式
元字符
. 任意单个字符
[] 任意匹配的单个字符
[^] 任意不匹配的单个字符
次数
* 任意多次
? 0次或1次
\ {m, n\ } 至少m次, 至多n次
位置
^ 行首
$ 行尾
< 词首
> 词尾
分组
\ ( \ ) 定义分组
\n 引用第n个分组
扩展正则表达式
元字符: 同
次数匹配:
+ 至少一次
? 不需要加
不需要加\
位置锚定:同
分组
() 不需要小括号
\1 同
逻辑符号 c|cat表示c或者cat
| 或者
相关文章推荐
- CentOS 6.7安装MySQL 5.6
- smarty3.0中文手册文档API及使用指南
- Centos 6.5下的LAMP环境搭建
- NYOJ 274 正三角形的外接圆面积(水)
- Android listview与adapter用法
- RMAN实战15:RMAN中maxsetsize、maxpiecesize、maxopenfiles、限速的配置
- ORACLE 11G没有备份文件參数文件在异机通过rman备份恢复找回被误删的数据
- 忘记原来的myql的root的密码;
- 十六周总结报告
- ps命令初步使用
- JavaScript之基础篇
- [转载]XMLHttpRequest Level 2 使用指南
- Hibernate框架学习之四:关联映射那些事
- 【FFmpeg】FFmpeg常用基本命令
- 《学会提问》读书笔记
- C#入门之简单计算器的实现。
- iOS OC (五) 字典NSDictionary 数组 NSArray 集合 NSSet
- 目标检测的图像特征提取之(一)HOG特征
- ORACLE表空间管理一二谈
- 字符串中统计单词个数