7-14<X7> re.xml 正则表达式
Contents
本章 typo 太多,故均不列出。
Para 1:……它们的语法非常相似,那么你仅仅阅读一下 re 模块的摘要,大致了解其中可用的函数和参数就可以了。
由于它们的语法非常相似,你仅仅阅读一下 re 模块的摘要,大致了解其中可用的函数和参数就可以了。
7.1 概览
Para 2:If what you're trying to do can be accomplished with string functions, you should use them. They're fast and simple and easy to read, and there's a lot to be said for fast, simple, readable code.
如果你要解决的问题利用字符串函数能够完成,你应该使用它们。它们快速、简单且容易阅读,而对于快速、简单、可读性强的代码等方面有很多内容。
……它们快速、简单且容易阅读,而快速、简单、可读性强的代码可以说出很多好处。
7.2 个案研究:街道地址
例7.1下, Para 1:很快,我发现上面的例子,仅仅匹配地址末尾的……
很快我发现,在上面的例子中,……
例7.2, (1):你利用 \b,……在 python 中,由于字符'\'在一个字符串中必须转义这个事实,从而变得非常麻烦。
由于字符 '\' 在一个字符串中必须转义,这会变得非常麻烦。
7.3 个案研究:罗马字母
- 确定了几个术语的使用:“fives character”翻译为“含五字符”(原译“被5整除的字符”),同样地,“tens character”翻译为“含十字符”(原译“被10整除的字符”)。原译注删去。
Para 1:这是一个表示数字的系统,它能够真正回溯到远古的罗马帝国(因此而得名)。
它实际上能够追溯到远古的罗马帝国
列举, 最后一条:罗马数字经常
从高位到低位书写,……
一般
7.3.1 校验千位数
Para 1:……由于罗马数字经常
是从高位到低位书写,……
一般
例7.3, (1):^表示仅仅
在一个字符串的开始匹配其后的字符串内容。
仅
同上:M?可选地匹配单个字符 M,由于它
重复出现三次,……
根据上文
最多
例7.3, (2):re 模块的本质是一个 search 函数
模块的本质是函数??
模块的关键是一个 search 函数
同上:你此刻关注的唯一事情,就是模式是否匹配上,可以利用 search 函数的返回值弄清这个事实。
……于是我们利用 search 函数的返回值了解这个事实。
例7.3, (3):'MM'
匹配上是因为……
能
例7.3, (4):'MMM'
匹配上是因为……
能
例7.3, (5):'MMMM' 没有匹配上。因为所有的三个 M 都匹配上,但是正则表达式还有字符串尾部的限制(由于字符 $),然而字符串没有结束……
'MMMM' 没有匹配上。因为所有的三个 M 都匹配完了,但是正则表达式还有字符串尾部的限制(由于字符 $),而字符串又没有结束
7.3.2 检验百位数
标题:检验百位数
为和上一节标题“校验千位数”一致,
校验百位数
文中多次出现了X位数位置
,实际上指的就是
X位数,一律修正。
Para 1:……,具体用那种方式表达和具体的数值相关。
而具体用那种方式表达和具体的数值有关。
第二次列举:零到三次出现 C 字符(如果是零,表示百位数为 0)
出现零次表示百位数为 0
例7.4, (2):因此 CD 和 D?C?C?C? 两个模式甚至
不再考虑
Para -1:吆!来看正则表达式能够多快变得难以理解?
这个语气叹词我可没见过(字典里也找不到这一义项,只能解释为动词,不能做语气词)。
哎呀!来看正则表达式能够多快变得难以理解?
7.4 使用 {n,m} 语法
Para 1:在 前面的章节,你处理了相同字符可以重复三次的情况,在正则表达式中有另外一个方式来表达这种情况,并且使代码的可读性更好。
在前面的章节,你处理了相同字符可以重复三次的情况。在正则表达式中,有另外一个方式来表达这种情况,并且能提高代码的可读性。
例7.6, (1):The 0 and 3 can be any numbers; if you want to match at least one but no more than three M characters, you could say M{1,3}.
可是是 0 到 3 之间的任何数字,如果你想要匹配至少 1 次,至多 3 次字符 M,则可以写成 M{1,3}。
这里的 0 和 3 可以改成其它任何数字;如果你想要匹配至少 1 次,至多 3 次字符 M,则可以写成 M{1,3}。
对照原文,不难判定孰正孰误。
例7.6, (5):但是 没有匹配
字符串的结尾。
根据上文,这里应当是
没有匹配上。
例7.6下, 注解:没有一个轻松的方法来确定两个正则表达式是否为等价的,……在本书后面的章节,关于如何书写测试样例有更多的讨论。
没有一个轻松的方法来确定两个正则表达式是否等价。……在本书后面的章节,将更多地讨论如何编写测试样例。
7.4.1 校验十位数和个位数
Para 1:现在我们来扩展扩展关于罗马数字的正则表达式,……
现在我们来扩展一下关于罗马数字的正则表达式,……
7.4 Para -2:……我曾经做过这样的事情,但是它并不是那么好看
。
有趣
7.5 松散正则表达式
例7.9, (1):当使用松散正则表达式时,请记住
最重要的一件事情就是:……
7.6 个案研究:解析电话号码
例7.10, (1):通常是从左到右阅读正则表达式,……
我们通常从左到右阅读正则表达式
为了用词的统一,后文的分割符
一律改为
分隔符。
例7.14, (1):这个正则表达式和前面的几乎相同,除了在第一个记忆组(区号)前面匹配……
这个正则表达式和前面的几乎相同,但它在第一个记忆组(区号)前面匹配……
例7.14, (4):但是你认为在区号前面的所有字符都是非数字字符(\D*)。Aargh.
没有翻译??!!
……唉!
例7.15, (2):……,不论这个电话号码的首字符是数字还是不是数字,还是在电话号码不同部分之间加上任意数目的任意类型的分隔符。,……
……,无论这个电话号码的首字符是不是数字,无论在电话号码各部分之间有多少任意类型的分隔符。
7.7 小结
x? 匹配一个可选的 x 字符(换句话说,它匹配 1 次或者 0 次 x 字符)。
换言之
Para -1:一些人,当遇到一个问题时,想“……”
一些人,遇到一个问题时就想:“……”