python中的正则

什么是正则表达式

正则表达式是匹配符合某些规则的字符串数据

一个正则表达式指定了一集与之匹配的字符串;模块内的函数可以让你检查某个字符串是否跟给定的正则表达式匹配(或者一个正则表达式是否匹配到一个字符串,这两种说法含义相同)。

正则表达式可以拼接; 如果 A 和 B 都是正则表达式, 那么 AB 也是正则表达式。 通常, 如果字符串 p 匹配 A 并且另一个字符串 q 匹配 B, 那么 pq 可以匹配 AB。除非 A 或者 B 包含低优先级操作,A 和 B 存在边界条件;或者命名组引用。所以,复杂表达式可以很容易的从这里描述的简单源语表达式构建。

正则表达式语法

\d 匹配数字,0-9
\D 匹配非数字,不是数字
\s 匹配空白,空格,tab键
\S 匹配非空白
\w 匹配非特殊字符,即a-z、A-Z、0-9、_、汉字
\W 匹配特殊字符,即非字母、非数字、非汉字

 

1 import re
2 
3 
4 # 使用\d进行匹配
5 ret = re.match(r"嫦娥\d号","嫦娥1号发射成功") 
6 print(ret.group())

执行结果:

嫦娥1号

 

. 匹配任意1个字符(除了\n)
[] 匹配[]中列举的字符
+ +号代表前面的字符必须至少出现一次,也可以出现多次(大于等于1)
* *号代表前面的字符可以不出现也可以出现一次或者多次(0次,1次,多次)
? ?号代表前面出现的字符最多只可以出现一次或者不出现(0次,1次)
{m} 匹配前一个字符出现m次
{m,n} 匹配前一个字符出现从m到n次

 

复制代码
#需求:匹配出一个字符串第一个字母为大小字符,后面都是小写字母并且这些小写字母可 有可无

import re

ret = re.match("[A-Z][a-z]*","M")
print(ret.group())

ret = re.match("[A-Z][a-z]*","MnnM")
print(ret.group())

ret = re.match("[A-Z][a-z]*","Aabcdef")
print(ret.group())
复制代码

执行结果:

M
Mnn
Aabcdef 

例2({m},{m,n}):

复制代码
#需求:匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线

import re


ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678")
print(ret.group())

ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
print(ret.group())
复制代码

执行结果:

12a3g4
1ad12f23s34455ff66
^ 匹配字符串开头
$ 匹配字符串结尾

 

match_obj = re.match("^\d.*\d$", "4hello4")
if match_obj:
    # 获取匹配结果
    print(match_obj.group())
else:
    print("匹配失败")

运行结果:

4hello4

匹配除了自定字符以外都匹配

[^指定字符]: 表示除了指定字符都匹配

 

需求: 第一个字符除了aeiou的字符都匹配

复制代码
import re


match_obj = re.match("[^aeiou]", "h")
if match_obj:
    # 获取匹配结果
    print(match_obj.group())
else:
    print("匹配失败")
复制代码

执行结果:h

posted @   EF果果  阅读(112)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示