zl程序教程

正则表达式经典

  • 《正则表达式经典实例(第2版)》——第 1 章 正则表达式简介   1.1正则表达式的定义

    《正则表达式经典实例(第2版)》——第 1 章 正则表达式简介 1.1正则表达式的定义

    正则表达式(regular expression)是一种可以在许多现代应用程序和编程语言中使用的特殊形式的文本模式。它们可以用来验证输入是否符合给定的文本模式;在一大段文本中查找匹配该模式的文本;用其他文本来替换匹配该模式的文本或者重新组织匹配文本的片段;把一块文本切分成一系列更小的文本,当然如果使用不当也可能搬起石头砸自己的脚。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——1.2 使用正则表达式进行查找和替换

    《正则表达式经典实例(第2版)》——1.2 使用正则表达式进行查找和替换

    虽然替代文本(replacement text)并不是一个正则表达式,读者也可以使用某些特殊的语法构造动态的替代文本。所有的流派都允许把正则表达式或者某个捕获分组匹配到的文本,重新添加到替代字符串中。实例2.20和实例2.21会对此加以讲解。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第1章,第1.2节,作者: 【美】Jan Goyvaerts , Steven Levith

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——1.3 正则表达式工具

    《正则表达式经典实例(第2版)》——1.3 正则表达式工具

    本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第1章,第1.3节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.3 正则表达式工具 除非已经拥有了相当长的使用正则表达式编程的经验,否则建议你先在一个工具中试验一下正则表达式,而不是直接在源代码中使用它们。本章和第2章中提供的正则表达式示例都是

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——第 2 章 正则表达式的基本技能   2.1匹配字面文本

    《正则表达式经典实例(第2版)》——第 2 章 正则表达式的基本技能 2.1匹配字面文本

    新接触正则表达式的人通常会对看到的每个标点字符进行转义。不要让任何人看出来你是个新手!要明智地选择需要转义的场合(时机)。一大堆不需要的反斜杠会使正则表达式变得难以阅读,特别是当在源代码中把正则表达式作为字符串来引用以至于所有这些反斜杠必须加倍出现的时候。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.1节,作者: 【美】Jan Goyvaerts , Steven

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.2 匹配不可打印字符

    《正则表达式经典实例(第2版)》——2.2 匹配不可打印字符

    匹配一个包含下列ASCII控制字符的字符串:振铃符(bell)、转义符(escape)、换页符(form feed)、换行符(line feed)、回车符(carriage return)、水平制表符(horizontal tab)和垂直制表符(vertical tab)。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.2节,作者: 【美】Jan Goyvaerts

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.3 匹配多个字符之一

    《正则表达式经典实例(第2版)》——2.3 匹配多个字符之一

    本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.3节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.3 匹配多个字符之一 问题描述创建一个正则表达式来匹配calendar的所有常见的错误拼写形式,使你能够在一份文档中找到这个单词而无需依赖作者的拼写能力。在每个元音位置都允许使用a

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.4 匹配任意字符

    《正则表达式经典实例(第2版)》——2.4 匹配任意字符

    然而,对于任意字符到底意味着什么则存在一些混淆。用来处理正则表达式的最古老的工具在处理文件时是逐行处理的,因此,在目标文本中从来不可能出现包含换行符的情形。在本书中讨论的编程语言则会把目标文本当作一个整体来处理,而不去管其中到底会包含多少个换行符。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.4节,作者: 【美】Jan Goyvaerts , Steven Lev

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.5 匹配文本行起始和或文本行结尾

    《正则表达式经典实例(第2版)》——2.5 匹配文本行起始和或文本行结尾

    本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.5节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.5 匹配文本行起始和或文本行结尾 问题描述分别创建4个正则表达式。匹配单词alpha,仅限于它出现在目标文本最开始的时候。匹配单词omega,仅限于它出现在目标文本结尾处的时候。匹

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.6 匹配完整单词

    《正则表达式经典实例(第2版)》——2.6 匹配完整单词

    如果要使用正则表达式来进行“只匹配完整单词”的查找,那么只需要把该单词放在两个单词边界之间,就像我们前面给出的‹\bcat\b›。第一个‹\b›要求‹c›出现在字符串的最开始处,或者是在一个非单词字符后面。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.6节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社区

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.7 Unicode码位、类别、区块和字母表

    《正则表达式经典实例(第2版)》——2.7 Unicode码位、类别、区块和字母表

    本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.7节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.7 Unicode码位、类别、区块和字母表 问题描述使用一个正则表达式来查找商标符号(™),要求通过指定其Unicode码位,而不是复制并粘贴一个实际上的商标符号。如果你选择复制并

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.8 匹配多个选择分支之一

    《正则表达式经典实例(第2版)》——2.8 匹配多个选择分支之一

    本书中的所有正则表达式流派都会使用正则制导的引擎。正则表达式依赖于这台引擎来工作。这里所说的正则制导1FF的含义是,在目标文本中的每个字符位置会首先匹配该正则表达式的所有可能排列,然后才会到下一个字符位置进行匹配尝试。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.8节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.9 分组和捕获匹配中的子串

    《正则表达式经典实例(第2版)》——2.9 分组和捕获匹配中的子串

    创建一个正则表达式,使之匹配yyyy-mm-dd格式的任意日期,并且分别捕获年、月和日。目标是在处理匹配的代码中可以更容易处理这些分别捕获的值。你可以假设目标文本中的所有日期都是合法的。正则表达式不必要考虑去掉像9999-99-99这样的非法数据,因为它们根本不可能出现在目标文本中。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.9节,作者: 【美】Jan Goyv

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.10 再次匹配先前匹配的文本

    《正则表达式经典实例(第2版)》——2.10 再次匹配先前匹配的文本

    下一个记号是连字符,它会按照字面进行匹配。接着就遇到了反向引用。正则引擎会检查第一个捕获分组的内容:08。然后引擎会试图按照字面来匹配这个文本。如果该正则表达式是不区分大小写的,那么捕获分组也会按照这种方式进行匹配。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.10节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.11 捕获和命名匹配子串

    《正则表达式经典实例(第2版)》——2.11 捕获和命名匹配子串

    可能是基于.NET的流行超过了Python的原因,.NET语法似乎成为了其他正则库开发人员更乐于接受的语法。Perl 5.10及更新版本使用的是它,而在Ruby 1.9的Oniguruma引擎中也是如此。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.11节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社区

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.12 把正则表达式的一部分重复多次

    《正则表达式经典实例(第2版)》——2.12 把正则表达式的一部分重复多次

    如果我们使用可变次数重复,并把n设置为0,事实上我们就是把在该量词之前的记号变成了可选的。‹h{0,1}›匹配一次‹h›或者根本不存在。如果不存在h,那么‹h{0,1}›会得到一个长度为0的匹配。如果你使用‹h{0,1}›来作为一个正则表达式,那么它会在目标文本中每个不是h的字符之前找到一个长度为0的匹配。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.12节,作者

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.13 选择最小或最大重复次数

    《正则表达式经典实例(第2版)》——2.13 选择最小或最大重复次数

    懒惰量词也会进行回溯,但却是从不同的方向进行的。一个懒惰量词会重复尽可能少的次数,然后保存一个回溯位置,并且允许正则表达式继续。如果后面的正则表达式匹配失败了,那么引擎会进行回溯,此时懒惰量词会再重复一次。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.13节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.14 消除不必要的回溯

    《正则表达式经典实例(第2版)》——2.14 消除不必要的回溯

    我们描述占有量词不会去记住回溯位置,而固化分组则会把回溯位置丢弃。这样会更容易理解匹配过程,但是读者也不要太在意这里的区别,因为很可能在你所使用的正则流派中根本不存在这样的区别。在许多流派中,‹x++›仅仅是‹(? x+)›语法上的简写,而二者的实现则完全是一模一样的。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.14节,作者: 【美】Jan Goyvaerts

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.15 避免失控重复

    《正则表达式经典实例(第2版)》——2.15 避免失控重复

    如果我们对正则表达式中所有其他的‹.*?›都做同样的操作,那么它们就都不会再继续扩展。虽然在正则表达式中还是存在7个惰性点号,但是它们永远也不会产生交叉。这样就会把正则表达式的复杂度降低到O(n),它与目标文本的长度之间是线性关系。而正则表达式的效率不可能比这更高了。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.15节,作者: 【美】Jan Goyvaerts ,

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.16 测试一个匹配,但不添加到整体匹配中

    《正则表达式经典实例(第2版)》——2.16 测试一个匹配,但不添加到整体匹配中

    本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.16节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.16 测试一个匹配,但不添加到整体匹配中 问题描述找出在一对HTML粗体标签之间的任何单词,但是不要把标签包含到正则表达式匹配中。例如,如果目标文本是My cat is furr

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.17 根据条件匹配两者之一

    《正则表达式经典实例(第2版)》——2.17 根据条件匹配两者之一

    这里的括号、问号和竖线都是属于条件判断语法的一部分。它们在这里并不具有平时的含义。你可以在‹then›和‹else›部分中使用任意种类的正则表达式。唯一的限制是如果想要在其中一个部分之内使用选择分支,就必须使用分组来把它们包到一起。因为在条件判断中只允许直接出现一条竖线。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.17节,作者: 【美】Jan Goyvaerts

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.18 向正则表达式中添加注释

    《正则表达式经典实例(第2版)》——2.18 向正则表达式中添加注释

    打开宽松排列模式会产生两个效果。首先,它会把位于字符组之外的井号(#)转变成一个元字符。井号会作为一个注释的开始,该注释的结尾是一行的结束或者该正则表达式的结束(取二者中先到的那个)。井号以及其后的所有内容都会被正则表达式引擎直接忽略。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.18节,作者: 【美】Jan Goyvaerts , Steven Levithan

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.19 在替代文本中添加字面文本

    《正则表达式经典实例(第2版)》——2.19 在替代文本中添加字面文本

    在这个例子中的百分号(%)和星号(*)总是字面字符,然而一个前导的反斜杠也可能会被当作一个转义字符,而不是一个字面上的反斜杠。«$1»和/或«\1»是指向一个捕获分组的反向引用。实例2.21中会讲解哪些流派对于反向引用会使用哪种语法。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.19节,作者: 【美】Jan Goyvaerts , Steven Levithan著

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.20 在替代文本中添加正则匹配

    《正则表达式经典实例(第2版)》——2.20 在替代文本中添加正则匹配

    把整个正则匹配重新插回到替代文本中,是在匹配文本之前、之后或者两边,甚至是在匹配文本的多个副本之间插入新文本的一种比较容易的方式。除Python之外,你都不必在正则表达式中添加任何捕获分组,就能够在替换中使用整个匹配结果。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.20节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.21 把部分的正则匹配添加到替代文本中

    《正则表达式经典实例(第2版)》——2.21 把部分的正则匹配添加到替代文本中

    实例2.10讲解了在正则表达式中如何使用捕获分组来多次匹配相同的文本。在正则表达式中,每个捕获分组匹配到的文本在每次成功匹配之后都是可用的。你可以把部分或者所有捕获分组中的文本按照任意顺序甚至多次插入到替代文本中。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.21节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——2.22 把匹配上下文插入到替代文本中

    《正则表达式经典实例(第2版)》——2.22 把匹配上下文插入到替代文本中

    上下文(context)这个术语,指的是正则表达式所应用于的目标文本。总共存在3种上下文:正则匹配之前的目标文本、正则匹配之后的目标文本以及整个目标文本。在匹配之前的文本有时候被称作左上下文(left context),而匹配之后的文本则相应地被称作右上下文(right context)。 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.22节,作者: 【美】Jan

    日期 2023-06-12 10:48:40     
  • 《正则表达式经典实例(第2版)》——导读

    《正则表达式经典实例(第2版)》——导读

    正则表达式在过去十多年间越来越普及。如今,所有常用的编程语言都会包含一个强大的正则表达式函数库,甚至在语言本身就内嵌了对于正则表达式的支持。许多开发人员都会利用这些正则表达式的功能,在应用程序中为用户提供使用正则表达式对其数据进行查找或者过滤的能力。正则表达式已经无处不在。 ** 前言 **正则表达式在过去十多年间越来越普及。如今,所有常用的编程语言都会包含一个强大的正则表达式函数库,

    日期 2023-06-12 10:48:40