Python核心编程第二版第十五章:正则表达式(课后习题)----我的答案

15-1.识别下列字符串:“bat”,“bit”,“but”,“hat”,“hit“或”hut“。

import re
key = 'batshdajbut'
p1 = r'(bat|bit|but|hat|hit|hut)'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.groups())

15-2.匹配用一个空格分隔的任意一对单词,比如名和姓。

import re
key = 'app ddd'
p1 = r'[A-Za-z]+ [ A-Za-z]+'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-3.匹配用一个逗号和一个空格分开的一个单词和一个字母

import re
key = 'app, d'
p1 = r'\w+, \w?'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-4.匹配所有合法的Python标识符

import re
key = 'init'
p1 = r'[A-Za-z_](\w|_)*'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-5请根据你本地关于地址的格式写法匹配一个街道地址。

import re
key = '3120 De la Cruz Boulevard'
p1 = r'\d+(\s[A-Za-z]+)+'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-6.匹配简单的以”www.“开头,以”.com“作结尾的Web域名。

import re
key = 'www.oddad.com'
p1 = r'\b^www..+.com$\b'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

附加题:

import re
key = 'www.oddad.edu'
p1 = r'\b^www..+(.com|.edu|.net)$\b'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-7.匹配全体Python整型的字符串表示形式的集合。

import re
key = '123 323 311'
p1 = r'( *\d+ *)+'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-8.匹配全体Python长整型的字符串表示的集合。

import re
key = '3L 33333L 1111L'
p1 = r'( *\d+[lL] *)+'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-9.匹配全体Python浮点型的字符串表示形式的集合。

import re
key = '3.3 3.1 3'
p1 = r'\d+(.\d)*'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-10.匹配全体Python复数的字符串表示形式的集合。

import re
key = '1+3j 3j'
p1 = r'( *\d*\+*(\dj)+ *)+'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-11.匹配所有合法的电子邮箱地址。

import re
key = '592488989@qq.com'
p1 = r'\w+@\w+(.com)$'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-12.匹配所有合法的Web网站地址(URL)。

import re
key = 'www.hao123.com'
p1 = r'\b^www.\w+(.com|.net|.edu)$'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-13.写一个正则表达式,能从这个字符串中提取出类型的名字。

import re

def type(string):
    p1 = r"<type '(\w+)'>"
    m = re.search(p1, string)
    if m is not None:
        return m.group(1)

print(type("<type 'int'>"))

15-14.正则表达式。请写一个正则表达式表示标准日历上其他三个月(十月,十一月,十二月)

import re
key = '10 11 12'
p1 = r'( *1+[0-2] *)+'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())

15-15.正则表达式。请写出一个允许使用连字符的正则表达式,但要求连字符必须出现在正确的位置。

import re
key = '1232-111111-12345'
p1 = r'([0-9]{4}-?[0-9]{6}-?[0-9]{5})|([0-9]{4}-?[0-9]{4}-?[0-9]{4}-[0-9]{4})'
pattern1 = re.compile(p1)
matcher1 = re.search(pattern1, key)
print(matcher1.group())


展开阅读全文

没有更多推荐了,返回首页