元数据
正则表达式必知必会
- 书名: 正则表达式必知必会
- 作者: Ben Forta
- 简介: 正则表达式是一种威力无比强大的武器,几乎在所有的程序设计语言里和计算机平台上都可以用它来完成各种复杂的文本处理工作。本书从简单的文本匹配开始,循序渐进地介绍了很多复杂内容,其中包括回溯引用、条件性求值和前后查找,等等。每章都为读者准备了许多简明又实用的示例,有助于全面、系统、快速掌握正则表达式,并运用它们去解决实际问题。本书适合各种语言和平台的开发人员。
- 出版时间 2007-11-21 00:00:00
- ISBN: 9787115164742
- 分类: 计算机-数据库
- 出版社: 人民邮电出版社
高亮划线
4.3 匹配特定的字符类别
-
📌 表4-2 数字元字符 ^26211978-27-1076-1244
- ⏱ 2023-07-08 06:29:58
-
📌 表4-3 字母数字元字符 ^26211978-27-2823-2993
- ⏱ 2023-07-08 06:31:39
-
📌 表4-4 空白字符元字符 ^26211978-27-4536-4706
- ⏱ 2023-07-08 06:34:17
5.3 防止过度匹配
-
📌 因为*和+都是所谓的“贪婪型”元字符,它们在进行匹配时的行为模式是多多益善而不是适可而止的。 ^26211978-33-1707-1753
- ⏱ 2023-07-08 06:58:05
-
📌 在不需要这种“贪婪行为”的时候该怎么办?答案是使用这些元字符的“懒惰型”版本 ^26211978-33-1835-1873
- ⏱ 2023-07-08 06:58:44
-
📌 表5-1 常用的贪婪型元字符和它们的懒惰型版本 ^26211978-33-2033-2215
- ⏱ 2023-07-08 06:59:05
6.2 单词边界
-
📌 \b用来匹配一个单词的开始或结尾。 ^26211978-37-558-575
- ⏱ 2023-07-08 07:00:53
-
📌 简单地说,\b匹配的是一个这样的位置,这个位置位于一个能够用来构成单词的字符(字母、数字和下划线,也就是与\w相匹配的字符)和一个不能用来构成单词的字符(也就是与\W相匹配的字符)之间。 ^26211978-37-1636-1729
- ⏱ 2023-07-08 07:03:02
-
📌 \b匹配且只匹配一个位置,不匹配任何字符。用\bcat\b匹配到的字符串的长度是3个字符(c、a、t),不是5个字符。 ^26211978-37-3666-3725
- ⏱ 2023-07-08 07:04:27
6.3 字符串边界
-
📌 来定义字符串边界的元字符有两个:一个是用来定义字符串开头的^,另一个是用来定义字符串结尾的$。 ^26211978-38-534-581
- ⏱ 2023-07-08 07:49:57
-
📌 用来启用分行匹配模式(multiline mode)的(? m) ^26211978-38-4904-4936
- ⏱ 2023-07-08 07:54:54
-
📌 分行匹配模式将使得正则表达式引擎把行分隔符当做一个字符串分隔符来对待。在分行匹配模式下,^不仅匹配正常的字符串开头,还将匹配行分隔符(换行符)后面的开始位置(这个位置是不可见的);类似地,$不仅匹配正常的字符串结尾,还将匹配行分隔符(换行符)后面的结束位置。 ^26211978-38-4960-5089
- ⏱ 2023-07-08 07:56:07
7.2 子表达式
-
📌 子表达式当作一个独立元素来使用。子表达式必须用(和)括起来。 ^26211978-42-489-519
- ⏱ 2023-07-08 08:01:28
-
📌 因为|操作符是把位于它左边和右边的两个部分都作为一个整体来看待的,它会把模式19|20\d{2}解释为19或20\d{2} ^26211978-42-4902-4963
- ⏱ 2023-07-08 08:05:12
8.1 回溯引用有什么用
- 📌 一般来说,元字符.不匹配换行符 ^26211978-46-2747-2762
- ⏱ 2023-07-08 08:11:09
8.2 回溯引用匹配
- 📌 \1;这是一个回溯引用,而它引用的正是前面划分出来的那个子表达式 ^26211978-47-1632-1664
- ⏱ 2023-07-08 08:15:32
8.3 回溯引用在替换操作中的应用
- 📌 表8-1 用来进行大小写转换的元字符 ^26211978-48-5226-5403
- ⏱ 2023-07-08 09:06:34
9.1 前后查找
- 📌 匹配本身并不返回,而是用于确定正确的匹配位置 ^26211978-51-1834-1856
- ⏱ 2023-07-08 09:18:23
9.2 向前查找
-
📌 有些正则表达式文档使用术语“消费”(consume)来表述“匹配和返回文本”的含义。在向前查找里,被匹配的文本不包含在最终返回的匹配结果里,这被称为“不消费”。 ^26211978-52-618-698
- ⏱ 2023-07-08 09:19:39
-
📌 向前查找(和向后查找)匹配本身其实是有返回结果的,只是这个结果的字节长度永远是0而已。因此,前后查找操作有时也被称为零宽度(zero-width)匹配操作。 ^26211978-52-2840-2918
- ⏱ 2023-07-08 09:24:20
9.3 向后查找
-
📌 ? =将向前查找(查找出现在被匹配文本之后的字符,但不消费那个字符) ^26211978-53-441-475
- ⏱ 2023-07-08 09:32:47
-
📌 许多正则表达式实现还支持向后查找,也就是查找出现在被匹配文本之前的字符(但不消费它),向后查找操作符是?<=。 ^26211978-53-500-555
- ⏱ 2023-07-08 09:33:42
-
📌 向前查找模式的长度是可变的,它们可以包含.和+之类的元字符,所以它们非常灵活。而向后查找模式只能是固定长度——这是一条几乎所有的正则表达式实现都遵守的限制。 ^26211978-53-3651-3765
- ⏱ 2023-07-08 09:35:54
9.5 对前后查找取非
- 📌 表9-1 各种前后查找操作符[插图] ^26211978-55-1020-1039
- ⏱ 2023-07-08 09:40:18
10.2 正则表达式里的条件
-
📌 回溯引用条件只在一个前面的子表达式搜索取得成功的情况下才允许使用一个表达式。 ^26211978-59-865-903
- ⏱ 2023-07-08 09:47:29
-
📌 (?(1)\s*</[Aa]>)是一个回溯引用条件——?(1)的含义是:如果第一个回溯引用(具体到本例,就是标签)存在,则使用\s*</[Aa]>继续进行匹配(换句话说,只有当前面的标签匹配成功,才继续进行后面的匹配)。 ^26211978-59-1943-2059
- ⏱ 2023-07-08 09:52:29
-
📌 前后查找条件只在一个向前查找或向后查找操作取得成功的情况下才允许一个表达式被使用。 ^26211978-59-3666-3707
- ⏱ 2023-07-08 09:56:59
