Python 正则表达式练习题

1. 创建Regex对象的函数是什么?

答:re.compile()函数返回Regex对象。

2. 在创建Regex对象时,为什么常用原始字符串?

答:使用原始字符串是为了让反斜杠不必转义。

3. search()方法返回什么?

答:search()方法返回Match对象。

4. 通过Match对象,如何得到匹配该模式的实际字符串?

答:group()方法返回匹配文本的字符串。

5. 用 r'(\d\d\d)-(\d\d\d - \d\d\d\d)' 创建的正则表达式中,分组0表示什么?分组1呢?分组2呢?

答:分组0表示整个匹配,分组1包含第一组括号,分组2包含第二组括号。

6. 括号和句点在正则表达式语法中有特殊的含义。如何制定正则表达式匹配真正的括号和句点字符?

答:句号和括号可以用反斜杠转义:\.、\(和\)。

7. findall()方法返回一个字符串的列表,或字符串元组的列表。是什么决定它提供哪种返回?

答:如果正则表达式没有分组,就返回字符串的列表。如果正则表达式有分组,就返回字符串元组的列表。

8. 在正则表达式中,|字符表示什么意思?

答:|表示匹配2组中的"任何一个"。

9. 在正则表达式中,?字符表示什么意思?

答:?字符可以表示"匹配前面分组0次或1次",或用于表示非贪婪匹配。

10. 在正则表达式中,+和*字符之间的区别是什么?

答:+匹配1次或多次。*匹配0次或多次。

11. 在正则表达式中,{3}和{3,5}之间的区别是什么?

答:{3}精确匹配前面分组的3次实例。{3,5}匹配3至5次实例。

12. 在正则表达式中,\d、\w和\s缩写字符类是什么意思?

答:数字、单词和空白字符。

13. 在正则表达式中,\D、\W和\S缩写字符类是什么意思?

答:分别匹配一个字符,它不是数字、单词或空白字符。

14. 如何让正则表达式不区别大小写?

答:将re.I 或者 re.IGNORECASE作为第二个参数传入re.compile(),让匹配不区分大小写。

15. 字符.通常匹配什么?如果 re.DOTALL作为第二个参数传递给re.compile(),它会匹配什么?

答:字符.通常匹配任何字符,换行符除外。

16. .*和.*?之间的区别是什么?

答:.*表示贪婪匹配,.*?表示非贪婪匹配。

17. 匹配所有数字和小写字母的字符分类语法是什么?

答:[0-9a-z]或[a-z0-9]

18. 如果 numRegex = re.compile(r'\d+'),那么numRegex.sub('X','12 drummers,11pipers,five rings,3hens')返回什么?

答:'X drummers,X pipers,five rings,X hens'

19. 将re.VERBOSE 作为第二个参数传递给re.compile(),让你能做什么?

答:添加空格和注释

20. 如何写一个正则表达式,匹配每3位就有一个逗号的数字?它必须匹配以下数字:

●  '42'

●  '1,234'

●  '6,368,745'

但不会匹配:

●  '12,34,567'(逗号之间只能有两位数字)

●  '1234'(缺少逗号)

答:re.compile(r'^\d{1,3}(,{3})*$')

21. 如何写一个正则表达式,匹配姓名Makamoto的完整姓名?你可以假定名字总是出现在姓前面,是一个大写字母开头的单词。

      该正则表达式必须匹配:

● 'Satoshi Nakamoto'

● 'Alice Nakamoto'

● 'RoboCop Nakamoto'

但不匹配:

● 'satoshi Nakamoto'

● 'Mr.Nakamoto'

● 'Nakamoto'

● 'Satoshi nakamoto'

答:re.compile(r'[A-Z][a-z]*\sNakamoto')

22. 如何编写一个正则表达式匹配一个句子,他的第一个词是Alice、Bob或Carol,第二个词是eats、pets或throws,第三词是apples、cats或baseablls.该句子以句点结束。这个正则表达式不区分大小写。它必须匹配:

● 'Alice eats apples'

● 'Bob pets cats'

● 'Carol throws baseballs'

● 'Alice throws Apples'

● 'BOB EATS CATS'

但不匹配:

● 'RoboCop eats apples'

● 'ALICE THROWS FOOTABLLS'

● 'carol eats 7 cats'

答:re.compile(r'(Alice|Bob|Carol)\s(eats|pets|throws)\s(apples|cats|baseablls)\.,re.IGNOREACSE')

 

你可能感兴趣的:(正则表达式)