1.使用正则表达式查找文本中最长的数字字符串。
import re
def longest1(s):
'''查找所有连续数字'''
t = re.findall('\d+', s)
if t:
return max(t, key=len)
return 'No'
def longest2(s):
'''使用非数字作为分隔符'''
t = re.split('[^\d]+', s)
if t:
return max(t, key=len)
return 'No‘
m="abcd12345ed125ss123456789"
print(longest1(m))
print(longest2(m))
2.将一句英语文本中的单词进行倒置,标点不倒置,假设单词之间使用一个或多个空格进行分割。比如I like beijing. 经过函数后变为:beijing. like I。
import re
def reverse(s):
t = re.split('\s+', s.strip())
t.reverse()
return ' '.join(t)
print(reverse('I like beijing.'))
print(reverse('Simple is better than complex.'))
3.编写程序,使用正则表达式提取另一个Python程序中的所有函数名。
import re
fileName = input('请输入一个 Python 程序文件名:')
pattern = r'^def (\w+?)\(.*?\):'
funcNames = []
with open(fileName, encoding='utf8') as fp:
for line in fp:
result = re.findall(pattern, line)
if result:
funcNames.extend(result)
print(funcNames)
import re
re_str = r'((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])'
result = re.fullmatch(re_str,'255.183.10.37')
print(result)
5.假设有一句英文,其中某个单词中有个不在开端的字母误写作大写,编写程序使用正则表达式进行检查和纠正为小写。
import re
def checkModify(s):
return re.sub(r'\b(\w)(\w+)\b',
lambda x: x.group(1)+x.group(2).lower(),s)
print(checkModify('aBc ABBC D eeee fFFFfF'))