35-习题
7.17 习题
1.创建 Regex
对象的函数是什么?
2.在创建 Regex
对象时,为什么常用原始字符串?
3. search()
方法返回什么?
4.通过 Match
对象如何得到匹配该模式的实际字符串?
5.在用 r'(\d\d\d)-(\d\d\d-\d\d\d\d)'
创建的正则表达式中,分组0表示什么?分组1表示什么?分组2表示什么?
6.括号和句点在正则表达式语法中有特殊的含义。如何指定正则表达式匹配真正的括号和句点字符?
7. findall()
方法返回一个字符串的列表或字符串的元组的列表。是什么决定它提供哪种返回?
8.在正则表达式中, |
字符表示什么意思?
9.在正则表达式中, ?
字符有哪两种含义?
10.在正则表达式中, +
和 *
字符之间的区别是什么?
11.在正则表达式中, {3}
和 {3,5}
之间的区别是什么?
12.在正则表达式中, \d
、 \w
和 \s
缩写字符类是什么意思?
13.在正则表达式中, \D
、 \W
和 \S
缩写字符类是什么意思?
14. .*
和 *?
之间的区别是什么?
15.匹配所有数字和小写字母的字符分类语法是什么?
16.如何让正则表达式不区分大小写?
17.字符 .
通常匹配什么?如果 re.DOTALL
作为第二个参数传递给 re.compile()
,它会匹配什么?
18.如果 numRegex = re.compile(r'\d+')
,那么 numRegex.sub('X', '12 drummers, 11 pipers, five rings, 3 hens')
返回什么?
19.将 re.VERBOSE
作为第二个参数传递给 re.compile()
,让你能做什么?
20.写一个正则表达式匹配每3位就有一个逗号的数字。它必须匹配以下数字:
'42'
'1,234'
'6,368,745'
但不会匹配以下数字:
'12,34,567'
(逗号之间只有两位数字)'1234'
(缺少逗号)
21.写一个正则表达式匹配姓为Nakamoto的完整姓名。你可以假定名字总是出现在姓前面,是一个大写字母开头的单词。该正则表达式必须匹配:
'Satoshi Nakamoto'
'Alice Nakamoto'
'RoboCop Nakamoto'
但不匹配:
'satoshi Nakamoto'
(名字没有首字母大写)'Mr. Nakamoto'
(前面的单词包含非字母字符)'Nakamoto'
(没有名字)'Satoshi nakamoto'
(姓没有首字母大写)
22.编写一个正则表达式来匹配一个句子,它的第一个词是Alice、Bob或Carol,第二个词是eats、pets或throws,第三个词是apples、cats或baseballs。该句子以句点结束。这个正则表达式不区分大小写。它必须匹配:
'Alice eats apples.'
'Bob pets cats.'
'Carol throws baseballs.'
'Alice throws Apples.'
'BOB EATS CATS.'
但不匹配:
'RoboCop eats apples.'
'ALICE THROWS FOOTBALLS.'
'Carol eats 7 cats.'