写出下面这道题目。1、text = '''行尸走肉、金蝉脱壳、百里挑一、金玉满堂、 背水一战、霸王别姬、天上人间、不吐不快、海阔天空、 情非得已、满腹经纶、兵临城下、春暖花开、插翅难逃、 黄道吉日、天下无双、偷天换日、两小无猜、卧虎藏龙、 珠光宝气、簪缨世族、花花公子、绘声绘影、国色天香、 相亲相爱、八仙过海、金玉良缘、掌上明珠、皆大欢喜、 浩浩荡荡、平平安安、秀秀气气、斯斯文文、高兴高兴''' 分别使用子模式编号和子模式命名两种方法编写程序, (1)同时查找text中ABAC和AABB形式的词语, (2)分别查找text中ABAC、AABB和ABAB形式的词语, (3)分析findall()函数输出列表的含义。
时间: 2023-06-09 16:08:07 浏览: 66
好的,我是ChitGPT,我已经记录了你的第一个问题。
子模式编号的程序如下:
import re
text = '''行尸走肉、金蝉脱壳、百里挑一、金玉满堂、 背水一战、霸王别姬、天上人间、不吐不快、海阔天空、 情非得已、满腹经纶、兵临城下、春暖花开、插翅难逃、 黄道吉日、天下无双、偷天换日、两小无猜、卧虎藏龙、 珠光宝气、簪缨世族、花花公子、绘声绘影、国色天香、 相亲相爱、八仙过海、金玉良缘、掌上明珠、皆大欢喜、 浩浩荡荡、平平安安、秀秀气气、斯斯文文、高兴高兴'''
pattern = r'(\w)\w(\1)\w'
print(re.findall(pattern, text))
子模式命名的程序如下:
import re
text = '''行尸走肉、金蝉脱壳、百里挑一、金玉满堂、 背水一战、霸王别姬、天上人间、不吐不快、海阔天空、 情非得已、满腹经纶、兵临城下、春暖花开、插翅难逃、 黄道吉日、天下无双、偷天换日、两小无猜、卧虎藏龙、 珠光宝气、簪缨世族、花花公子、绘声绘影、国色天香、 相亲相爱、八仙过海、金玉良缘、掌上明珠、皆大欢喜、 浩浩荡荡、平平安安、秀秀气气、斯斯文文、高兴高兴'''
pattern = r'(?P<first>\w)\w(?P=first)\w'
print(re.findall(pattern, text))
对于第二个问题,三个形式的词语的程序如下:
import re
text = '''行尸走肉、金蝉脱壳、百里挑一、金玉满堂、 背水一战、霸王别姬、天上人间、不吐不快、海阔天空、 情非得已、满腹经纶、兵临城下、春暖花开、插翅难逃、 黄道吉日、天下无双、偷天换日、两小无猜、卧虎藏龙、 珠光宝气、簪缨世族、花花公子、绘声绘影、国色天香、 相亲相爱、八仙过海、金玉良缘、掌上明珠、皆大欢喜、 浩浩荡荡、平平安安、秀秀气气、斯斯文文、高兴高兴'''
pattern1 = r'(\w)\w(\1)\w'
pattern2 = r'(\w)(\w)\1\2'
pattern3 = r'(\w)(\w)\2\1'
print(re.findall(pattern1, text))
print(re.findall(pattern2, text))
print(re.findall(pattern3, text))
对于第三个问题,findall()函数输出列表的含义是,返回符合正则表达式的所有非重叠匹配项的列表。每个匹配项是一个字符串,按照它们在原始字符串中的顺序排列。如果没有匹配项,则返回空列表。