python - 解析字符串以获取特定字符之前和之后的数字
问题描述
我试图X
从这个字符串中解析数字之前和之后的数字,但无法获取所有数字。有人可以帮我指出我在这里缺少什么吗?
>>> import re
>>> f = "abc_xyz1024X137M4B4abc_xyz"
>>> re.findall(".*\w+(\d+)X(\d+).*", f)
[('4', '137')]
解决方案
请注意,.*\w+(\d+)X(\d+).*
首先尽可能多地抓取所有 0+ 字符(整个字符串),然后尝试匹配后续模式。\w+
回溯到下一个字符是之前的数字X
,因此第一个捕获组只包含之前的单个数字X
,第二个捕获组包含之后的所有数字X
。检查此.*\w+(\d+)X(\d+).*
调试器页面。
您应该只匹配并捕获数字,然后匹配X
然后再次匹配并捕获数字。
您可以使用
import re
f = "abc_xyz1024X137M4B4abc_xyz"
print(re.findall(r"(\d+)X(\d+)", f))
# => [('1024', '137')]
或者,如果您只对单场比赛感兴趣:
m = re.search(r"(?P<x>\d+)X(?P<y>\d+)", f)
if m:
print(m.groupdict()) # => {'y': '137', 'x': '1024'}
推荐阅读
- grafana - 使用 istioctl 更改 IstioControlPlane 中的 grafana.ini
- reactjs - 在 TypeScript 中扩展 react-native-paper 组件
- javascript - 无法弄清楚这种行为:while 循环中的 2 个 while 循环
- python - 对时间序列数据进行 TensorFlow 预测?(回归模型)
- c# - 如何删除数据表集合中所有数据表中的第一列C#
- flutter - Flutter 从其他类的下拉菜单中获取选定的值
- python - 安装 pgspecial 时出错,它一直在尝试调用/使用 psycopg2,而不是已经安装的 psycopg2-binary
- javascript - if 语句总是执行
- azure - 从具有特定范围的 Postman 调用 Azure WebApi
- r - 在 R 中实现优化的二维子集和问题