import re
# a.所有的正整数
re_str = '[+]?[1-9][0-9]*'
print(re.fullmatch(re_str,'+123'))
#b.所有的负整数
re_str = '[-][1-9][0-9]*'
print(re.fullmatch(re_str,'-213'))
#c.所有的浮点数
re_str = '[-]?[+]?[0-9]+\.[0-9]+[1-9]'
print(re.fullmatch(re_str,'-2.0601'))
#d.所有的⾮负浮点数
re_str = '[+]?[0-9]+\.[0-9]+[1-9]'
print(re.fullmatch(re_str,'2.0001'))
'''
1. 能够完全匹配字符串“(010)-62661617”和字符串“01062661617”的正则表达式包括(A ,B)
A. “(?\d{3})?-?\d{8}”
B. “[0-9()-]+”
C. “[0-9(-)]\d”
D. “[(]?\d[)-]\d*”
'''
re_str = '[0-9()-]+'
print(re.fullmatch(re_str,'(010)-62661617'))
'''
2. 能够完全匹配字符串“c:\rapidminer\lib\plugs”的正则表达式包括( C,B)
A. “c:\rapidminer\lib\plugs”
B. “c:\rapidminer\lib\plugs”
C. “(?i)C:\RapidMiner\Lib\Plugs” ?i:将后⾯的内容的⼤写变成⼩写
D. “(?s)C:\RapidMiner\Lib\Plugs” ?s:单⾏匹配
'''
#re_str = '(?i)C:\RapidMiner\Lib\Plugs'
#print(re.fullmatch(re_str,'c:\rapidminer\lib\plugs'))
'''
3. 能够完全匹配字符串“back”和“back-end”的正则表达式包括(A,B,C ) 短路操作:前⾯的为真了,就不会再执
⾏后边的操作
A. “\w{4}-\w{3}|\w{4}”
B. “\w{4}|\w{4}-\w{3}”
C. “\S+-\S+|\S+”
D. “\w\b-\b\w|\w*”
'''
re_str = r'\w{4}|\w{4}-\w{3}'
print(re.fullmatch(re_str,'back'))
'''
4. 能够完全匹配字符串“go go”和“kitty kitty”,但不能完全匹配“go kitty”的正则表达式包括(A,D )
:\1就是重复前⾯第⼀个()/组合⾥⾯的内容
:\2就是重复前⾯第⼆个()/组合⾥⾯的内容
A. “\b(\w+)\b\s+\1\b”
B. “\w{2,5}\s*\1”
C. “(\S+) \s+\1”
D. “(\S{2,5})\s{1,}\1”
'''
#re_str = r'\b(\w+)\b\s+\1\b'
#print(re.fullmatch(re_str,'go kitty'))
'''
5. 能够在字符串中匹配“aab”,⽽不能匹配“aaab”和“aaaab”的正则表达式包括(B ,C,D)
A. “a*?b”
B. “a{,2}b”
C. “aa??b”
D. “aaa??b”
'''
'''中⽂名 ⻉拉克·侯赛因·奥巴⻢ 外⽂名 Barack Hussein Obama II 别 名 欧巴⻢ 国
籍美国 ⺠ 族 德裔族 出⽣地 美国夏威夷州檀⾹⼭ 出⽣⽇期 1961年8⽉4⽇ 职 业政治家、律师、总统 毕业院
校哥伦⽐亚⼤学,哈佛⼤学 信 仰新教 主要成就 1996年伊利诺伊州参议员 主要成就美国第56届、57届总统
2009年诺⻉尔和平奖获得者 时代周刊年度⻛云⼈物2008、2011 任期内清除本·拉登 代表作品 《我相信变
⾰》《我⽗亲的梦想》《⽆畏的希望》 所属政党美国⺠主党 ⾎ 型 AB型 学 院⻄⽅学院 妻 ⼦⽶歇尔·拉沃恩·
奥巴⻢ 性 别 '''
a. (此题为示范题)当使用正则表达式“中文名\s+(\S+)\s+”抽取美国总统奥巴马的中文名时,替换字符串“$1”的赋值为需要抽取的中文名。
b. 当使用正则表达式“外文名\s+([a-zA-Z ]*)\s+”抽取美国总统奥巴马的外文名时,替换字符串“$1”的赋值为需要抽取的外文名。
c. 当使用正则表达式“出生日期\s+(.*)\s+”抽取美国总统奥巴马的出生日期时,替换字符串“$1”的赋值为需要抽取的出生日期。
d. 使用正则表达式“职\s*业(\S+)\s+”抽取美国总统奥巴马的职业时,替换字符串“$1”的赋值为需要抽取的职业。
e. 使用正则表达式“主要成就(.*)\s+[\u4e00-\u9fa5]”抽取美国总统奥巴马的主要成就时,替换字符串“$1”的赋值为需要抽取的主要成就。
f. 使用正则表达式“妻\s*子(\S+)\s”抽取美国总统奥巴马的妻子姓名时,替换字符串“$1”的赋值为需要抽取的姓名。
re_str = '外文名\s+([a-zA-Z ]+)\s+'
print(re.findall(re_str, '外文名 Barack Hussein Obama II 别 '))
# 出⽣⽇期 1961年8⽉4⽇ 职
re_str = '\s+\d+年\d月\d日\s+'
print(re.findall(re_str, '出生日期 1961年8月4日 职 '))
# 职 业政治家、律师、总统
re_str = '政治家、\s*律师、总统\s+'
print(re.findall(re_str, '职 业政治家、律师、总统 '))
#主要成就美国第56届、57届总统2009年诺⻉尔和平奖获得者 时代周刊年度⻛云⼈物2008、2011 任期内清除本·拉登
re_str = '[^主要成就].+'
print(re.findall(re_str, '主要成就美国第56届、57届总统2009年诺⻉尔和平奖获得者 时代周刊年度⻛云⼈物2008、2011 任期内清除本·拉登 '))
#妻 ⼦⽶歇尔·拉沃恩·奥巴⻢
re_str = '[^妻 ⼦].+'
print(re.findall(re_str, '妻 ⼦⽶歇尔·拉沃恩·奥巴⻢ '))
打印
['Barack Hussein Obama II']
[' 1961年8月4日 ']
['政治家、律师、总统 ']
['美国第56届、57届总统2009年诺⻉尔和平奖获得者 时代周刊年度⻛云⼈物2008、2011 任期内清除本·拉登 ']
['⽶歇尔·拉沃恩·奥巴⻢ ']