Python正则表达式匹配各种标准形式

本文汇总了一系列实用的正则表达式,包括匹配中文字符、双字节字符及空白行等,适用于字符串处理和表单验证等场景。

正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。
正则表达式链接网址

匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\S*?)[^>]>.?

### 分组匹配的实现方式 在 Python 正则表达式中,分组匹配是通过括号 `()` 来实现的,用于将多个字符作为一个整体进行匹配或捕获。正则表达式中支持多种分组形式,包括普通分组、命名分组和反向引用等。 - 普通分组 `(ab)`:将括号内的内容作为一个整体进行匹配,并在匹配结果中捕获该部分[^1]。 ```python import re pattern = re.compile(r'(ab)+') result = pattern.findall('ababab') print(result) # 输出: ['ab', 'ab', 'ab'] ``` - 多选分组 `(|)`:匹配括号中任意一个表达式。例如 `(abc|def)` 可以匹配 `"abc"` 或 `"def"` [^1]。 ```python pattern = re.compile(r'^(abc|def)$') result = pattern.match('def') print(result.group()) # 输出: def ``` - 反向引用 `\num`:引用第 `num` 个分组匹配到的内容,用于后续匹配或替换操作。 ```python pattern = re.compile(r'^(\d+)\+(\d+)=(\1\+\2)$') result = pattern.match('123+456=123+456') print(result) # 匹配成功 ``` - 命名分组 `(?P<name>...)`:为分组起一个别名,便于在后续代码中引用该分组内容[^1]。 ```python pattern = re.compile(r'^(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})$') result = pattern.match('2023-10-05') print(result.group('year')) # 输出: 2023 ``` - 命名引用 `(?P=name)`:在匹配过程中引用之前定义的命名分组,确保相同内容重复出现。 ```python pattern = re.compile(r'^(?P<word>\w+) (?P=word)$') result = pattern.match('hello hello') print(result) # 匹配成功 ``` ### 分组在匹配结果中的体现 当正则表达式中包含分组时,`findall` 方法将返回一个包含元组的列表,每个元组表示一个匹配结果,其中的元素对应各个分组匹配到的内容[^2]。 ```python import re pattern = re.compile(r'(\d\d) (\d\d)') result = pattern.findall("42 33 34 44") print(result) # 输出: [('42', '33'), ('34', '44')] ``` ### 判断匹配结果是否成功 可以通过 `re.match` 或 `re.search` 方法判断正则表达式是否匹配成功。若匹配成功,返回一个匹配对象;否则返回 `None` [^3]。 ```python import re result = re.match(r'^\d{3}\-\d{3,8}$', '010-12345') print(result) # 输出: <_sre.SRE_Match object at 0x...> result = re.match(r'^\d{3}\-\d{3,8}$', '010 12345') print(result) # 输出: None ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值