正则表达式

1. 匹配单个字符

代码 功能说明 示例 匹配结果说明
. 匹配任意一个字符(除了换行符 \n a.c 匹配 abc, a@c, a c,但不匹配 acabbc
[ ] 匹配括号中列举的任意一个字符 [aeiou] 匹配任意一个元音字母
[0-9A-F] 匹配一个十六进制数字
\d 匹配一个数字(0-9) \d{3} 匹配三位数,如 123999
\D 匹配一个非数字 \D\d+ 匹配以非数字开头后跟若干数字,如 A123#456
\s 匹配任意空白字符(空格、Tab、换行等) \w+\s\w+ 匹配两个单词之间有空格的内容,如 hello world
\S 匹配任意非空白字符 \S+ 匹配一串连续的非空字符,常用于提取单词或URL
\w 匹配字母、数字、下划线、汉字 \w+ 匹配用户名、变量名,如 username_123张三
\W 匹配非字母、非数字、非下划线、非汉字 \W+ 匹配特殊字符,如 @, #, $, 中文! 中的 !

2. 匹配多个字符

代码 功能说明 示例 匹配结果说明
* 匹配前一个字符出现 0次或多次(即可有可无) go*gle 匹配 ggle, google, gooogle
ab*c 匹配 ac, abc, abbbc
+ 匹配前一个字符出现 1次或多次(至少一次) go+gle 匹配 google, gooogle,但不匹配 ggle
a+b 匹配 ab, aab, aaab,但不匹配 b
? 匹配前一个字符出现 0次或1次(要么没有,要么一次) colou?r 匹配 colorcolour,但不能匹配 colooor
{m} 匹配前一个字符出现 恰好 m 次 \d{3} 匹配三位数字,如 123,但不匹配 121234
{m,n} 匹配前一个字符出现 从 m 到 n 次 \d{2,5} 可以匹配 12, 123, 12345,但不匹配 1123456

3.匹配开头和结尾

代码 功能
^ 匹配字符串开头
$ 匹配字符串结尾

4.匹配分组

代码 功能
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
\num 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串

5.贪婪与非贪婪

正则 待匹配字符 匹配结果 说明
<.*> <script>...<script> <script>...<script> 默认为贪婪匹配模式,会匹配尽量长的字符串
<.*?> r'\d' <script><script> 加上?为将贪婪匹配模式转为非贪婪匹配模式,会匹配尽量短的字符串

加上?为将贪婪匹配模式转为非贪婪匹配模式,会匹配尽量短的字符串

*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
  • 更多综合实例

1. 匹配手机号(中国大陆)

^1[3-9]\d{9}$
  • 示例:13812345678
  • 说明:
    • ^1 表示以 1 开头
    • [3-9] 表示第二位是 3~9 的数字
    • \d{9} 表示后面还有 9 个数字

2. 匹配邮箱地址

^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  • 示例:test.user@example.com
  • 说明:
    • \w+ 匹配邮箱用户名部分
    • @. 是必须的符号
    • 支持带子域名的邮箱格式

3. 提取网页中的超链接

<a\s+href=["'](.*?)["']>
  • 示例文本:

    html深色版本

    <a href="https://example.com">点击这里</a>
    
  • 提取内容:https://example.com

4.提取日期格式(YYYY-MM-DD)

\d{4}-\d{2}-\d{2}
  • 示例:2025-06-02
  • 扩展:
    • 可加边界判断:\b\d{4}-\d{2}-\d{2}\b
    • 支持斜杠:\d{4}[-/]\d{2}[-/]\d{2}

5.校验密码强度(含大小写、数字、至少8位)

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
  • 示例:Password123
  • 说明:
    • (?=.*[a-z]) 表示至少有一个小写字母
    • (?=.*[A-Z]) 表示至少有一个大写字母
    • (?=.*\d) 表示至少有一个数字
    • .{8,} 表示总长度至少 8 位
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是正则表达式: 通俗理解:按照一定的规则,从某个字符串中匹配出想要的数据。这个规则就是正则表达式。 标准答案:...
    af9f873c915c阅读 285评论 0 0
  • 正则表达式 有的人遇到问题说,“这个我知道用正则表达式解决。”结果出现了两个问题。逆着木头纹理切割需要更大力气,当...
    伍帆阅读 232评论 0 0
  • 点(.)匹配任意的字符: text = "ab"ret = re.match('.',text)print(ret...
    140923阅读 329评论 0 0
  • 正则表达式和re模块: 什么是正则表达式: 通俗理解:按照一定的规则,从某个字符串中匹配出想要的数据。这个规则就是...
    徐弱西阅读 434评论 0 0
  • 正则表达式是是计算机科学的一个概念,使用单个字符串来描述,用来检索、替换符合某个模式的文本。许多程序设计语言都支持...
    飞鱼湾阅读 455评论 0 1

友情链接更多精彩内容