Python正则表达式匹配字符串中的数字

2024-04-29 14:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python2.7中使用正则表达式来匹配字符串中的数字,但我无法匹配表达式中的单个数字,下面是我的代码

import re
import cv2

s = '858  1790 -156.25 2'
re_matchData = re.compile(r'\-?\d{1,10}\.?\d{1,10}')
data = re.findall(re_matchData, s)
print data

然后打印:

^{pr2}$

但当我把表情从

re_matchData = re.compile(r'\-?\d{1,10}\.?\d{1,10}')

re_matchData = re.compile(r'\-?\d{0,10}\.?\d{1,10}')

然后打印:

['858', '1790', '-156.25', '2']

d{1,10}和d{0,10}之间有什么混淆吗? 如果我做错了,怎么改正? 谢谢你检查我的问题!在


Tags: 字符串代码importredata表达式数字cv2
3条回答

我宁愿这样做:

import re
s = '858  1790 -156.25 2'
re_matchData = re.compile(r'\-?\d{1,10}\.?\d{0,10}')
data = re_matchData.findall(s)
print data

输出:

^{pr2}$

试试这个:

r'\-?\d{1,10}(?:\.\d{1,10})?'

使用(?:)?将小数部分设为可选。在

对于r'\-?\d{0,10}\.?\d{1,10}',与2匹配的是{}。在

第一个\d{1,10}匹配1到10个数字,第二个\d{1,10}也匹配1到10个数字。为了使两者匹配,您的号码中至少需要2个数字,它们之间有一个可选的.。在

您应该将整个分数设为可选,而不仅仅是.。在

r'\-?\d{1,10}(?:\.\d{1,10})?'

相关问题 更多 >