随着互联网的迅速发展,几乎所有工具软件和程序语言都支持的正则表达式也变得越来越强大和易于使用。本书是讲解正则表达式的经典之作。本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。
本书自第1 版开始着力于教会读者“以正则表达式来思考”,来让读者真正“精通”正则表达式。该版对PHP的相关内容、Java1.5和Java1.6的新特性作了可观的扩充讲解。任何有机会使用正则表达式的读者都会从中获益匪浅。
前言
第1章正则表达式入门
解决实际问题
作为编程语言的正则表达式
以文件名做类比
以语言做类比
正则表达式的思维框架
对于有部分经验的读者
检索文本文件:Egrep
Egrep元字符
行的起始和结束
字符组
用点号匹配任意字符
多选结构
忽略大小写
单词分界符
小结
可选项元素
其他量词:重复出现
括号及反向引用
神奇的转义
基础知识拓展
语言的差异
正则表达式的目标
更多的例子
正则表达式术语汇总
改进现状
总结
一家之言
第2章入门示例拓展
关于这些例子
Perl简单入门
使用正则表达式匹配文本
向实用的程序前进
成功匹配的副作用
错综复杂的正则表达式
暂停片刻
使用正则表达式修改文本
例子:公函生成程序
举例:修整股票价格
自动的编辑操作
处理邮件的小工具
用环视功能为数值添加逗号
Text-to-HTML转换
回到单词重复问题
第3章正则表达式的特性和流派概览
在正则的世界中漫步
正则表达式的起源
最初印象
正则表达式的注意事项和处理方式
集成式处理
程序式处理和面向对象式处理
查找和替换
其他语言中的查找和替换
注意事项和处理方式:小结
字符串,字符编码和匹配模式
作为正则表达式的字符串
字符编码
Unicode
正则模式和匹配模式
常用的元字符和特性
字符表示法
字符组及相关结构
锚点及其他“零长度断言”
注释和模式量词
分组,捕获,条件判断和控制
高级话题引导
第4章:表达式的匹配原理
发动引擎
两类引擎
新的标准
正则引擎的分类
几句题外话
测试引擎的类型
匹配的基础
关于范例
规则1:优先选择最左端的匹配结果
引擎的构造
规则2:标准量词是匹配优先的
表达式主导与文本主导
NFA引擎:表达式主导
DFA引擎:文本主导
第一想法:比较NFA与DFA
回溯
真实世界中的例子:面包屑
回溯的两个要点
备用状态
回溯与匹配优先
关于匹配优先和回溯的更多内容
匹配优先的问题
多字符“引文”
使用忽略优先量词
匹配优先和忽略优先都期望获得匹配
匹配优先、忽略优先和回溯的要旨
占有优先量词和固化分组
占有优先量词,?+、*+、++和{m,n}+
环视的回溯
多选结构也是匹配优先的吗
发掘有序多选结构的价值
NFA、DFA和POSIX
最左最长规则
POSIX和最左最长规则
速度和效率
小结:NFA与DFA的比较
总结
第5章:正则表达式实用技巧
正则表达式的平衡法则
若干简单的例子
匹配连续行(续前)
匹配IP地址
处理文件名
匹配对称的括号
防备不期望的匹配
匹配分隔符之内的文本
了解数据,做出假设
去除文本首尾的空白字符
HTML相关范例
匹配HTMLTag
匹配HTMLLink
检查HTTPURL
验证主机名
在真实世界中提取URL
扩展的例子
保持数据的协调性
解析CSV文件
第6章:打造高效正则表达式
典型示例
稍加修改——先迈最好使的腿
效率vs准确性
继续前进——限制匹配优先的作用范围
实测
全面考查回溯
POSIXNFA需要更多处理
无法匹配时必须进行的工作
看清楚一点
多选结构的代价可能很高
性能测试
理解测量对象
PHP测试
Java测试
VB.NET测试
Ruby测试
Python测试
Tcl测试
常见优化措施
有得必有失
优化各有不同
正则表达式的应用原理
应用之前的优化措施
通过传动装置进行优化
优化正则表达式本身
提高表达式速度的诀窍
常识性优化
将文字文本独立出来
将锚点独立出来
忽略优先还是匹配优先?具体情况具体分析
拆分正则表达式
模拟开头字符识别
使用固化分组和占有优先量词
主导引擎的匹配
消除循环
方法1:依据经验构建正则表达式
真正的“消除循环”解法
方法2:自顶向下的视角
方法3:匹配主机名
观察
使用固化分组和占有优先量词
简单的消除循环的例子
消除C语言注释匹配的循环
流畅运转的表达式
引导匹配的工具
引导良好的正则表达式速度很快完工
总结:开动你的大脑
第7章:Perl
作为语言组件的正则表达式
Perl的长处
Perl的短处
Perl的正则流派
正则运算符和正则文字
正则文字的解析方式
正则修饰符
正则表达式相关的Perl教义
表达式应用场合
动态作用域及正则匹配效应
匹配修改的特殊变量
qr//运算符与regex对象
构建和使用regex对象
探究regex对象
用regex对象提高效率
Match运算符
Match的正则运算元
指定目标运算元
Match运算符的不同用途
迭代匹配:ScalarContext,不使用/g
Match运算符与环境的关系
Substitution运算符
运算元replacement
/e修饰符
应用场合与返回值
Split运算符
Split基础知识
返回空元素
Split中的特殊Regex运算元
Split中带捕获型括号的match运算元
巧用Perl的专有特性
用动态正则表达式结构匹配嵌套结构
使用内嵌代码结构
在内嵌代码结构中使用local函数
关于内嵌代码和my变量的忠告
使用内嵌代码匹配嵌套结构
正则文字重载
正则文字重载的问题
模拟命名捕获
效率
办法不只一种
表达式编译、/o修饰符、qr/···/和效率
理解“原文”副本
Study函数
性能测试
正则表达式调试信息
结语
第8章:Java
Java的正则流派
Java对p{}和P{}的支持
Unicode行终结符
使用java.util.regex
ThePattern.compile()Factory
Pattern的matcher方法
Matcher对象
应用正则表达式
查询匹配结果
简单查找-替换
高级查找-替换
原地查找-替换
Matcher的检索范围
方法链
构建扫描程序
Matcher的其他方法
Pattern的其他方法
Pattern的split方法,单个参数
Pattern的split方法,两个参数
拓展示例
为ImageTag添加宽度和高度属性
对于每个Matcher,使用多个Pattern校验HTML
解析CSV文档
Java版本差异
1.4.2 和1.5.0之间的差异
1.5.0和1.6 之间的差异
第9章:.NET
.NET的正则流派
对于流派的补充
使用.NET正则表达式
正则表达式快速入门
包概览
核心对象概览
核心对象详解
创建Regex对象
使用Regex对象
使用Match对象
使用Group对象
静态“便捷”函数
正则表达式缓存
辅助函数
.NET高级话题
正则表达式装配件
匹配嵌套结构
Capture对象
第10章:PHP
PHP的正则流派
Preg函数接口
“Pattern”参数
Preg函数罗列
preg_match
preg_match_all
preg_replace
preg_replace_callback
preg_split
preg_grep
preg_quote
“缺失”的preg函数
preg_regex_to_pattern
对未知的Pattern参数进行语法检查
对未知正则表达式进行语法检查
递归的正则表达式
匹配嵌套括号内的文本
不能回溯到递归调用之内
匹配一组嵌套的括号
PHP效率
模式修饰符S:“研究”
扩展示例
用PHP解析CSV
检查taggeddata的嵌套正确性
索引
《四季便当2》内容简介:可能你的胃根本不饿,饿的是心。本书是吉井忍口碑佳作《四季便当》姊妹篇,本格日本料理指南,写在食物里的
《舞姬》内容简介:本书以舞蹈家波子和她丈夫矢木、女儿舞蹈演员品子和儿子高男这个家庭为主线开始的。舞蹈家波子嫁给矢木后,渐渐
每一个时代都需要有一些人,以犀利而冷静,不失温暖与悲悯的文字,透析出我们最切肤的迷茫与本质。这是一本这样的书,它鲜明地带
书分上下两编,上编的概论性文章,从鲁迅的文学即心学这一总的观点出发,系统阐述鲁迅的现代心学的起源于展开,鲁迅的心学与他的
“三联讲坛”系列丛书精选了一批有特色的大学选修课、专业课及有影响的演讲录音整理成书,自《从卡夫卡到昆德拉》(吴晓东)、《与
写在书前楔子维吉尼亚·吴尔芙与凌叔华亨利·詹姆斯与R.L.斯蒂文荪杰姆斯·瑟帛与E.B.怀特亨利·詹姆斯与H.G.威尔斯福德与庞德麦
真莉,一个即将走出校园的女孩,喜欢自由自在地疯,喜欢整年都穿着吊脚裤出门,喜欢像一颗颗青橄榄的巧克力,因为在暑假期间参与
《汉字与文物的故事》内容简介:汉唐时代是历史上最多元、最开放,也最充满逸趣的时代。当时传入许多新的思维,激发了人们的想象,
《历史的复盘:百年纷争人与事》内容简介:▲ 复盘历史,厘清晚近中国历史关节点纷乱的头绪——孙中山等革命党人与“天地会”之类秘
《新冠时代的我们》内容简介:“我们从未想过要为丢垃圾获得许可。我们从未想过要按照民防部的新闻简报来安排每一天的生活。我们也
《软件测试综合技术》内容简介:本书由黑盒测试技术、Web测试技术、性能测试技术三大部分组成,针对软件测试技术及项目实训中的各类
这本书面世时,我已25岁。人生正在紧要关口,大的决断呼之欲出。离开电台之后的这两年,命运暗涌几近诡异。现在的我,定居在北京
《FDA风云史:美国食品和药品监管的台前幕后》内容简介:美国的食品和药品监管体制起始于20世纪初,经过百年的磨砺,从一个对食品药
《新时期以来鲁迅形象的重构》主要内容:这样的文字更适合于文学批评,而不特别适合于学术研究。但是,我会从另一个角度来看待学
《梵蒂冈地窖》内容简介:《梵蒂冈地窖》是纪德最著名的长篇代表作之一,令人忍俊不禁又意味深长的讽刺性作品,纪德本人将其称为“
《回望手艺》内容简介:◆回望半辈走访传统手艺的人生,日本采写第一人盐野米松作品 ◆再续民艺经典之作《留住手艺》,历史与今朝,
叶曼在任台湾《妇女杂志》总编辑时,曾在《妇女杂志》开设“新礼仪”、“新女儿经”、“叶曼信箱”三个专栏。其中“叶曼信箱”栏
本書所收文字,寫作年份從一九七六年至二○○一年,跨度達四分一世紀。作者說,之所以把關於魯迅、陳映真、朱光潛這三人的論述放
《没有钱照样留学美国》内容简介:没有钱也能留学美国,是有条件的。但这些条件是可以通过自己的努力创造的。作者利用在中国大陆和
《现代信用体系建设》内容简介:本书以信用体系的发展历程为脉络,介绍了东西方信用体系发展的规律和特点。其目的是以古鉴今,总结