python - 这个正则表达式发生了什么?
问题描述
我正在使用 python3re
模块来剥离一串不是数字或数字的字符串'.'
我的第一次尝试是这样的:
r = re.sub('[^0-9].', '', s)
当然,任何时候我有一个'.'
在那里它都不会正常工作。所以我在前面加了一个反斜杠,'.'
效果很好。
我的问题是,虽然我理解为什么第一个表达式不起作用,但我不明白为什么它会同时匹配'.'
字符和紧随其后的字符。
我从阅读文档中所期望的是,给定一个字符串'15.45'
I 会以这样的字符串结束:'1545'
,因为'.'
它将匹配除我已经排除的 0-9 之外的所有字符。
有人可以告诉我这里发生了什么吗?
解决方案
您将两个字符与[^0-9].
.
匹配 1:不是数字的东西 ( [^0-9]
)
匹配 2:任何东西 ( .
)
将句点匹配 ( .
) 放在“不是这些字符”集中:
import re
s = "b15_.45a"
re.sub('[^.0-9]+', '', s)
# '15.45'
这会给你“一串不是数字或'.'的东西”。
推荐阅读
- c++ - 为什么在输入变量 b 时出现错误。(第 8 行)
- go - 使用 dep 将 Helm 3 添加为 Go 依赖项
- java - 有没有办法在 GridPane 中为元素设置动画
- javascript - 尝试在 REST 客户端中发布数据时收到无法 POST 错误
- java - 如何将用户信息添加到 Sentry 上下文?
- angular - 具有反应形式的默认检查收音机
- flutter - 如何使用 Flutter 在编辑表单中显示用户数据?
- mysql - MySQL 累积总和按日期分组但在特定日期后排除
- uber-api - 访问 partner.admin_accounts
- debugging - 长时间运行的测试