Python用正则表达式根据格式匹配成语,如:AABB,AABC,ABAC......

        代码中使用了 re 模块,这是 Python 的一个内置模块,可以用来处理正则表达式。正则表达式是一种用来匹配字符串的模式,可以用来检查一个字符串是否包含某些子串,或者是否符合某种格式。代码中使用了以下的正则表达式:

((.)\2(.)\3):这个表达式匹配 AABB 型的字符串,即由两个相同的字符和另外两个相同的字符组成的字符串。例如,嘻嘻哈哈,哗哗啦啦等。

代码中的 \1 \2 \3 分别代表正则表达式中的分组,也就是用括号 () 包围的部分。\1 代表第一个分组(就是整个表达式本身),\2 代表第二个分组,\3 代表第三个分组。

import re

with open('chengyu.txt', 'r') as f:  # 打开文件并读取内容
    words = f.read().split()  # 将文件内容按空格分割成列表
    # 定义不同类型的成语列表,并在第一个元素标明类型
    AABB = ['AABB']
    pattern_AABB = r'((.)\2(.)\3)'  # 定义 AABB 型的正则表达式
    AABC = ['AABC']
    pattern_AABC = r'((.)\2(.)(.))'  # 定义 AABC 型的正则表达式
    ABAC = ['ABAC']
    pattern_ABAC = r'((.)(.)\2(.))'  # 定义 ABAC 型的正则表达式
    ABBA = ['ABBA']
    pattern_ABBA = r'((.)(.)\3\2)'  # 定义 ABBA 型的正则表达式
    ABBC = ['ABBC']
    pattern_ABBC = r'((.)(.)\3(.))'  # 定义 ABBC 型的正则表达式
    ABCB = ['ABCB']
    pattern_ABCB = r'((.)(.)(.)\3)'  # 定义 ABCB 型的正则表达式
    for word in words:  # 遍历每个词语
        if re.match(pattern_AABB, word):  # 如果匹配 AABB 型
            AABB.append(word)  # 将词语添加到 AABB 列表中
        elif re.match(pattern_AABC, word):  # 如果匹配 AABC 型
            AABC.append(word)  # 将词语添加到 AABC 列表中
        elif re.match(pattern_ABAC, word):  # 如果匹配 ABAC 型
            ABAC.append(word)  # 将词语添加到 ABAC 列表中
        elif re.match(pattern_ABBA, word):  # 如果匹配 ABBA 型
            ABBA.append(word)  # 将词语添加到 ABBA 列表中
        elif re.match(pattern_ABBC, word):  # 如果匹配 ABBC 型
            ABBC.append(word)  # 将词语添加到 ABBC 列表中
        elif re.match(pattern_ABCB, word):  # 如果匹配 ABCB 型
            ABCB.append(word)  # 将词语添加到 ABCB 列表中
print(AABB)  # 打印 AABB 列表
print(AABC)  # 打印 AABC 列表
print(ABAC)  # 打印 ABAC 列表
print(ABBA)  # 打印 ABBA 列表
print(ABBC)  # 打印 ABBC 列表
print(ABCB)  # 打印 ABCB 列表

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值