正则表达式学习笔记
1. 引言 以前我们用 grep 在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义。其实 grep 还可以找出 符合某个模式(Pattern) 的一类字符串。例如找出所有符合 xxxxx@xxxx.xxx 模式的字符串(也就是email地址),要求x字符可以是字母、数字、下划线、小数点或减号,email地址的每一部分可以有一个或多个x字符,例如 abc.d@ef.com 、 1_2@987-6.54 ,当然符合这个模式的不全是合法的email地址,但至少可以做一次初步筛选,筛掉 a.b 、 c@d 等肯定不是email地址的字符串。再比如,找出所有符合 yyy.yyy.yyy.yyy 模式的字符串(也就是IP地址),要求y是0-9的数字,IP地址的每一部分可以有1-3个y字符。 如果要用 grep 查找一个模式,如何表示这个模式,这一类字符串,而不是一个特定的字符串呢?从这两个简单的例子可以看出,要表示一个模式至少应该包含以下信息: 字符类(Character Class) :如上例的x和y,它们在模式中表示一个字符,但是取值范围是一类字符中的任意一个。 数量限定符(Quantifier) : 邮件地址的每一部分可以有 一个或多个x字符,IP地址的每一部分可以有 1-3个y字符 各种字符类以及普通字符之间的位置关系:例如邮件地址分三部分,用普通字符 @ 和 . 隔开