元字符详解:
位置:
^ 一行的开始
$ 一行的结尾
字符组:
[...] 结构体,容许使用则列出某处期望匹配的某一个字符
- 连字符 表示一个范围 举例: 与 一样
[0-9A-Z_!.?]表示匹配一个数字、大写字母、下画线、惊叹号、点号、问好
排除型字符组
[^...] 表示不匹配 举例: [^1-6] 匹配除了1至6以外的任何字符
. 匹配任意一个字符 举例: 要匹配 03/19/76、 03-19-76、或者03.19.76
可以写成,: 03[/-.]19[/-.]76 复杂,但精确
更简单的写法: 03.19.76 简单,但不精确
| 或
() 划定多选结构的范围 举例: gr[ea]y 相同 grey|gray 相同 gr(e|a)y
错误: gr[e|a]y 在这里|是字符不是元字符
egrep -i 不区分大小写
单词分界符:
eqgrep 支持 元字符序列 \< 和 \>
<和>本身不是元字符 只有当与斜线结合才是。
量词:
可选项元素
? 代表可选项,只作用于之前紧邻的元素,只匹配一次
列子:需要匹配7月4日 (july fourth) 月可以写成July或是Jul, 日期可以写成fourth、4th、4。
写法: egrep -i 'july?.(fourth|4(th)?)
+ 作用于之前紧邻的元素可匹配多次,但自少一次
* 作用于之前紧邻的元素可匹配多次,没限制
区间量词 {min,max}
举例:
[a-zA-Z]{1,5} 表示1到5个字母
反向引用: 容许匹配与表达式先前部分匹配的同样文本。 () () ()对应 \1 \2 \3
([a-z])([0-9])\1\2
转义
\元字符 将当作字符串使用
变量名匹配 标识符只包含字母、数字及下划线 [a-zA-Z_][a-zA-z0-9_]* 有长度限制则[a-zA-Z_][a-zA-z0-9_]* {0,31}
引号内的字符串
匹配 "[^"]*"
美金金额 (包含两位小数)
匹配 \$[0-9]+(\.[0-9][0-9])?
HTTP/HTML URL
匹配 \
简单匹配 \
HTML tag
匹配: <.*>
时间
匹配: (1[012]|[1-9]):[0-5][0-9].(am|pm)
24小时匹配 \<([01]?[0-9]|2[0-4]):[0-5][0-9]\>
元字符:
\t 制表符
\n 换行符
\r 回车符
\s 任何空白字符 (空格符、制表符、进纸符)
\S 除\s之外的任何字符
\w [a-zA-Z0-9] (在 \w+ 可以匹配单词)
\W 除\w之外的任何字符
\d [0-9],即数字
\D 除\d的任何字符
/i 不区分大小写
\b perl单词分隔符, egrep 的单词分隔符用\< \>
阅读(1212) | 评论(0) | 转发(0) |