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

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

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

import rewith 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 列表

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

  1. python中正则表达式的默认匹配方式为_Python模式匹配与正则表达式

    1.1 不用正则表达式来匹配文本 假设我希望在一个字符串中找到电话号码,电话号码的格式为三个数字,一个短横线,四个数字,一个短横线,四个数字 比如:131-3310-5293和132-2670-986 ...

  2. c++正则表达式 日期格式匹配

    std::regex reg("(\\d{4})-(0\\d{1}|1[0-2])-(0\\d{1}|[12]\\d{1}|3[01])\\s(0\\d{1}|1\\d{1}|2[0-3]) ...

  3. js正则表达式 URL格式匹配详解

    0.URL格式 protocol :// hostname[:port] / path / [;parameters][?query]#fragment [;parameters]没见过 这里就不做相 ...

  4. python中正则表达式的默认匹配方式为贪婪匹配_python正则表达式贪婪算法与非贪婪算法与正则表达式子模式的简单应用...

    先引入一下百度百科对于正则表达式的概念: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则 ...

  5. js正则表达式 URL格式匹配 http替换成https

    匹配替换http为https: function urlConversion(path) {let reg = /^(https?:\/\/)([0-9a-z.]+)(:[0-9]+)?([/0-9a ...

  6. python中正则表达式的简单应用_Python正则表达式详细应用

    原文地址:http://www.jb51.net/article/65286.htm 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合, ...

  7. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  8. java string 返回匹配正则的字符串的起始位置_【Python】正则表达式

    概述 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Pyth ...

  9. python判断是否包含数字的成语_Python知识点记录三(正则表达式)

    正则表达式 正则表达式是一个特殊的字符序列,可以检测一个字符串是否与我们设定的字符序列相匹配. 一.findall()方法 re模块下的findall()方法可以查找对应字符/字符串 最简单的方法可以 ...

最新文章

  1. ATL::CStringA和std::string之间转换的一些误区
  2. partial 分布类
  3. ajax实现php验证码验证码,PHP验证码之Ajax验证实现方法_PHP教程
  4. 网络加速和优化控制常用管理
  5. C# asp.net mvc 配置多个route 参数
  6. JAVA四种遍历Map的方法
  7. 双十一提前预热,这款耳机直降80元!
  8. Altium Designer中PCB关于Import Changes报错最终解决方案
  9. jedis连接池的maxIdle和maxtotal参数
  10. H3C交换机配置SSH
  11. vue的nxut框架生命周期触发两遍的问题
  12. 概率统计Python计算:单个正态总体均值的双侧区间估计
  13. android 卸载残留代码,完全卸载AndroidStudio(示例代码)
  14. MX550性能怎么样 mx550 属于什么档次的显卡
  15. 积极心态,助力人生成功
  16. oracle dbca没有,ORACLE 使用DBCA静默创建数据库
  17. 到底什么是范数?什么是0范数、1范数、2范数?区别又是什么?
  18. Android 实现三种响铃模式的切换
  19. CTFHUB-WEB-XSS【05】反射型
  20. 微软为Windows8平板所配备的键鼠套装

热门文章

  1. jks bks 等的定义 如何将jks转化为bks的
  2. virsh 保护命令 virtual protect rebase
  3. Perl之正则表达式基础(一)
  4. VOT-toolkit Python 版本使用教程--官方样例版
  5. element ui 的 el-tab 当使用 router-view 时 mounted 执行了多次
  6. 爬取京东笔记本电脑销量榜每件商品详情页url,并存入云服务器中的mysql库
  7. linux可以打开浏览器嘛,Linux下怎样可以打开浏览器?
  8. 【区块链】以太坊Solidity编写一个简单的Hello World合约
  9. 使用pip安装模块时提示: No module named pip
  10. K3 Wise 常用表【转载】