Python特殊序列\d能匹配哪些数字?

本文通过实例测试,详细解析了正则表达式中d在缺省语言环境下的匹配范围,包括半角和全角阿拉伯数字的匹配情况,以及中文数字的匹配限制。

在缺省语言环境下,老猿对\d的匹配范围做了个测试,下面的数字包含半角数字、全角数字、中文数字,测试语句如下:

>>> m=re.search(r'(\d*)(\D*)(\d*)','123123一二三壹贰叁①②③123')
>>> m
<re.Match object; span=(0, 18), match='123123一二三壹贰叁①②③123'>
>>> m.groups()
('123123', '一二三壹贰叁①②③', '123')
>>> 

可以看到阿拉伯数字的半角和全角都能匹配,但中文数字无法匹配。

老猿Python,跟老猿学Python!
博客地址:https://blog.youkuaiyun.com/LaoYuanPython

请大家多多支持,点赞、评论和加关注!谢谢!

### 使用 Python 正则表达式匹配数字Python 中,可以利用 `re` 模块中的方法实现正则表达式的操作。以下是几种常见的匹配数字的方式: #### 1. 匹配所有的数字 可以通过 `\d+` 来匹配连续的一组或多组数字。`\d` 表示单个数字字符(0-9),而加号 `+` 则表示匹配一个或多个这样的字符。 ```python import re str_data = 'hello world today is 2022.4.15 ok' num_list = re.findall(r'\d+', str_data) print('匹配到的数字:', num_list) # 输出: ['2022', '4', '15'] ``` 上述代码会提取字符串中所有的纯数字部分[^1]。 --- #### 2. 匹配指定长度的数字 如果需要匹配固定位数或者一定范围内的数字,可以使用 `{m,n}` 的形式。例如,匹配三位数可以用 `\d{3}` 实现;匹配两位至四位之间的数字可用 `\d{2,4}`。 ```python string = ''' laHellotest13560165235python ''' pat = r'\d{3}' rst = re.search(pat, string) if rst: print('匹配结果:', rst.group()) # 输出第一个符合条件的结果 ``` 此代码片段展示了如何找到至少包含三个连续数字的部分[^4]。 --- #### 3. 匹配浮点数 对于带有小数点的数值,可采用更复杂的模式来识别完整的浮点型数据结构。下面的例子说明了怎样捕捉形如 `-?[\d]+(\.[\d]*)?` 这样的实数(支持负号和无小数的情况)。 ```python float_pattern = r'-?\d+(\.\d*)?' text_with_floats = "The temperatures are -3.7°C and 28 degrees." found_floats = re.findall(float_pattern, text_with_floats) for match in found_floats: full_number = ''.join(match).strip() if isinstance(match, tuple) else match.strip() print(full_number) # 结果应该是 [-3.7, 28] ``` 这里定义了一个较为通用的小数匹配规则。 --- #### 4. 特殊情况下的转义处理 当涉及到反斜杠 (`\`) 自身作为特殊符号时,需注意双重转义问题。比如直接书写 `\d` 可能会被误解为其他意义,因此推荐总是加上原始字符串标记 `r''` 或者显式写出双反斜杠 `"\\d"`[^3]。 --- ### 总结 以上介绍了多种基于 Python 的正则表达技术用于定位不同类型的数据序列。从简单的整数检索扩展到复杂的小数乃至自定义格式化串解析均有所涉猎。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值