元字符 . (dot符)
元字符 . 可以匹配任意字符
image.png
串: '03[-./]19[-./]76' 里的 - 不是连字符
.也不是元字符, 不表示任意字符匹配
这时, '[-./]' 表示匹配范围是 - . / 这三个字符
因为 他们紧紧跟在集合外框--- 元字符 [ 后 (or [^之后)
连字符不位于开头的case下, 连字符才用来表示范围
So here is a question: 元字符什么时候作为元字符,发挥特殊功能, 而什么时候单纯用做一个字符呢?
这个问题, 以现在我的水平暂时无法解答, 况且正则语法本身就是乱七八糟的.
下面, 我记录一个语法容易混淆的例子
-
首先, 我在当前dir下 建立了三个文件 文件名如图
对于串: '.txt'
此串 用于查找: 任意字符+txt 这一组合的字串
对于串: '*.txt'
此串查找: (任意数量,任意字符串)+.txt 这一组合的字串
可见 字符 . 体现出了不同的效果
(下图标红为匹配字段)
多选结构 与 元字符 |
元字符 | 搭配小括号 () 使用
元字符 | 意为 或
'gr[ae]y' 匹配范围是 gray grey
'gr(a|e)y' 匹配范围也是 gray grey
'gr[a|e]y' 匹配范围是 gray grey gr|y
如果|出现在集合中, 则他仅仅是一个普通字符
中括号[], 与小括号() 用法存在区别
中括号[]表示集合, 限定一个单位字符的范围
而小括号则是表示一种分支选择, 分支里面的内容是字符串, 字符个数是没有限制的
'D(rake|uck)' 范围是 Drake 和 Duck
(a|b) a, b 是不限长的 是独立的字符串个体
小括号用于限定范围, 但没有小括号, | 也是具备或功能的
'^From|Sub|Date' 范围是: ^From + Sub + Date
'^(From|Sub|Date)' 范围是: 以From/Sub/Date 为行开头
前者只指定了From这一个行开头
可见小括号,影响着正则表达式的语义
忽略大小写 grep -i
-i 参数, 可以忽略文件大小写
忽略大小写