正则匹配的妙用-匹配重复子串

问题:要求密码不能有相同长度大于2的子串重复,验证密码的有效性。

思路:使用正则表达式匹配目标字符串,匹配是否存在重复的子串,如果匹配结果不为空,即不合格。

用到了 1.正则表达式的分组匹配;2.引用分组匹配匹配到的字符串的 知识。

代码:

import re

password_str = "abcef123abc"

ret = re.findall(r"(.{3,}).*\1", password_str)

>>>print(ret)
['abc']

说明:
1)(.{3,}):括号中的字符被正则表达式视为一个分组,即分组匹配,题解代表任意字符出现3次以上作为一个分组;
2)\num:即为引用子模式num匹配到的字符串;num为子模式的编号. (分组匹配也可称为子模式匹配)。子模式编号:整个正则表达式作为一个模式编号为“0”,其余子模式从左至右从 1 - 99 依次编号,最大编号为99;
3).* : 代表任意字符出现0次或多次,因为相同子串可能相连也可能被其他字符割开;
连起来就是:匹配任意字符组成的长度至少为3的字符子串出现2次的结果。也就可实现“不能有相同长度大于2的子串重复”密码的验证。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • “正则表达式”是可以匹配文本片段的模式。用来匹配、提取、或替换文本或字符串中的片段、子串。 1. 字符 => 匹配...
    NJingZYuan阅读 2,962评论 0 1
  • 1、表达式基础 1.1 句点符号 假设在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,...
    冰河winner阅读 4,053评论 0 1
  • 正则表达式 是一个描述字符模式的对象。 JavaScript中的正则表达式用RegExp对象表示。 正则表达式的定...
    亮亮叔家的小笔笔阅读 5,081评论 0 1
  • tags: 正则表达式categories: JavaScript欢迎点击我的博客原文 前端会遇到很多字符串验证问...
    浅茉Sara阅读 4,145评论 1 2
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,596评论 0 11

友情链接更多精彩内容