Mastering Regular Expressions
正则表达式,是用来进行文件检索的有效工具
最常用的文件检索指令为: grep 或 egrep
正则表达式由两种字符构成
- 元字符 metacharacters ---- 特殊字符
- 文字 literal ---- 除元字符外的普通字符
元字符: ^ $
元字符: [ -
符号 ^ 象征行开始
符号 $ 象征行结束
这两个元字符,匹配的不是具体的字符,而是文本位置
这两个字符, 可以视为Anchor 真如船钩一样, 挂到文本相应的位置
[例] 串: ^bit 表示检索所有以bit为开头的文本行
[例] 串: ^cat$ 表示匹配检索一行, 该行内容为字符串cat
因为 ^ 和 $ 分别指定了要匹配串的前后位置, 中间内容就固定了
十分实用的集合
集合, 使用方括号符号 [] 表示
正则里,可以选择匹配指定范围内(集合内)的字符
比如, 有时无法分清gray还是grey
这是, 可以实用正则串: gr[ae]y 来进行查找
###
终端: egrep 'sep[ae]r[ae]te' somewhere
则, 正则串匹配范围有四, 分别是
separate, seperate, seperate, seperete
一种很常见的应用是, 无视大小写
比如要检索smith 这个name 正则串可以写成
[Ss]mith
- 连字符 - (配合集合使用)
如果要检索匹配一个数字,那么写集合就太麻烦了
bad case: [0123456789]
crt case: [0-9]
Another case: [A-Fa-z0-9]
则上面这一个字符
匹配范围为: 0~9的整数 + a-z的小写字母 + A-F大写字母
[注]: 连字符 - 仅在集合内使用,才是具有特殊功能的元字符.
连字符位于集合外部,就是一个普通的字符.
-
集合内的元字符 ^ : 排除功能(配合集合使用)
集合内的符号 ^ means negate
[1-6] 表示匹配字符, 范围从1~6均可
在 集合内使用 元字符 ^ 意为取反
[^1-6] 表示匹配一个字符, 范围除1~6外均可
[注]: 字符 ^ 在正常情况下是一个anchor, 挂住文本行的开头; 而在集合内的 ^ 符, 是一个代表反义排除功能的特殊符号