不通的宿主语言,正则表达式的用法和写法都有很大的不同。
在某种特定的宿主语言下使用正则表达式,主要考虑3个问题:
1.支持的元字符,以及元字符的含义。这被称为正则表达式的 流派 。
2.正则表达式与宿主语言的交互方式。
3.正则表达式引擎如何将表达式应用到文本。
在正则的世界中漫步
正则表达式的起源
正则表达式起源于20世纪40年代两位神经学家,他们研究出一种模型,认为神经系统在神经元层面上工作的方式,后来数学家在代数学中正式描述了这种被他称为 “正则集合”的模型,正则表达式才成为现实。
常用的元字符和特性
下面的内容是对第一章和第二章的总结,主要介绍各个元字符和其意义。
字符表示法
字符缩略表示法
\a 警报
\b 退格
\e escape字符(在Perl中作为ASCII的转义符)
\f 进纸符
\n 换行符
\r 回车符
\t 制表符
\v 垂直制表符
字符组及相关结构
普通字符组:[a-z]和[^a-z]
[a-zA-Z]能匹配所有的字母
几乎能匹配任何字符的元字符:点号
字符组简记法:\w \d \s \W \D \S
\w 单词中的字符,表示所有数字和字符,等价于[a-zA-Z0-9_]
\W 跟\w相反
\d 数字 ,等价于[0-9]
\D 跟\d相反
\s 空白字符,包括换行,制表符,空格。
\S 跟\s相反
锚点及其他“零长度断言”
这种字符并不会匹配具体的文本,而是寻找文本中的位置。
行/字符串的起始位置:^ 和 \A
\A 匹配待搜索文本的起始位置
行/字符串的结束位置:$和\Z(换行符之前的位置) 或\z(不考虑换行符)
单词分界符: \b \B \< \>
\B 非单词分界符,比如数字之类的。
顺序环视 (?=) (?!) 逆序环视(?<=) (?
分组,捕获,条件判断和控制
括号可以进行分组和捕获,是以从左到右数开括号的个数算的,如果支持反向引用,则这些括号内的子表达式可以在后面用\1 \2来表示。
(?:....) 分组但不捕获的括号。
fighting!!
阅读(3267) | 评论(0) | 转发(0) |