Python------------第八章正则表达式课堂实验

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)
  1. 写一个正则表达式判断一个字符串是否是ipv4地址。
    规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数字的大小是0-255 例如:255.189.10.37 正确 256.189.89.9 错误。
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'))

你可能感兴趣的:(Python)