1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 分别使用正则表达式的子模式编号和子模式命名两种方法匹配ABAC AABB ABAB式成语

分别使用正则表达式的子模式编号和子模式命名两种方法匹配ABAC AABB ABAB式成语

时间:2020-01-19 12:11:53

相关推荐

分别使用正则表达式的子模式编号和子模式命名两种方法匹配ABAC AABB ABAB式成语

text = '''行尸走肉、金蝉脱壳、百里挑一、金玉满堂、背水一战、霸王别姬、天上人间、不吐不快、海阔天空、情非得已、满腹经纶、兵临城下、春暖花开、插翅难逃、黄道吉日、天下无双、偷天换日、两小无猜、卧虎藏龙、珠光宝气、簪缨世族、花花公子、绘声绘影、国色天香、相亲相爱、八仙过海、金玉良缘、掌上明珠、皆大欢喜、浩浩荡荡、平平安安、秀秀气气、斯斯文文、高兴高兴'''

使用子模式编号的方法编写程序,

(1)同时查找text中ABAC和AABB形式的词语,

(2)分别查找text中ABAC、AABB和ABAB形式的词语,

from re import findalltext = '''行尸走肉、金蝉脱壳、百里挑一、金玉满堂、背水一战、霸王别姬、天上人间、不吐不快、海阔天空、情非得已、满腹经纶、兵临城下、春暖花开、插翅难逃、黄道吉日、天下无双、偷天换日、两小无猜、卧虎藏龙、珠光宝气、簪缨世族、花花公子、绘声绘影、国色天香、相亲相爱、八仙过海、金玉良缘、掌上明珠、皆大欢喜、浩浩荡荡、平平安安、秀秀气气、斯斯文文、高兴高兴'''# 子模式编号——同时匹配print("-子模式编号--同时匹配ABAC和AABB-")pattern_1 = r'(((.).\3.)|((.)\5(.)\6))' # 正则表达式前加r是为了不转义反斜杠后的字符,\3代表此处重复出现子模式3for item in findall(pattern_1, text):print(item[0])# 子模式命名——同时匹配print("-子模式命名--同时匹配ABAC和AABB-")pattern_2 = r'(((?P<f>.)(?P=f)(?P<g>.)(?P=g))|((?P<h>.)(?P<i>.)(?P=h)(?P<j>.)))' # AABB式for item in findall(pattern_2, text):print(item[0])# 子模式编号——分别匹配print("-子模式编号--分别匹配ABAC-")pattern_3 = r'((.).\2.)' # ABAC式for item in findall(pattern_3, text):print(item[0])print("-子模式编号--分别匹配AABB-")pattern_4 = r'((.)\2(.)\3)' # AABB式for item in findall(pattern_4, text):print(item[0])print("-子模式编号--分别匹配ABAB-")pattern_5 = r'((.)(.)\2\3)' # ABAB式for item in findall(pattern_5, text):print(item[0])# 子模式命名——分别匹配print("-子模式命名--分别匹配ABAC-")pattern_6 = r'((?P<f>.)(?P<g>.)(?P=f)(?P<h>.))' # ABAC式for item in findall(pattern_6, text):print(item[0])print("-子模式命名--分别匹配AABB-")pattern_7 = r'((?P<f>.)(?P=f)(?P<g>.)(?P=g))' # AABB式for item in findall(pattern_7, text):print(item[0])print("-子模式命名--分别匹配ABAB-")pattern_8 = r'((?P<f>.)(?P<g>.)(?P=f)(?P=g))' # ABAB式for item in findall(pattern_8, text):print(item[0])

运行结果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。