应该允许:
99
10
100
不应该允许:
0
1
试试这个:
r"[^0-1]"
但它只需要从2到9的数字。
更新:
这就是我要找的:([2-9]|\d\d+)
答案 0 :(得分:1)
除0或1之外的正整数是2到9之间的单位数字或任何具有多个数字的数字。希望这会有所帮助:
'0*([1-9]\d+|[2-9])'
答案 1 :(得分:0)
那个看起来不错,首先匹配“长”字然后匹配单位,负向后查找减号:
(?<!-)(\d\d+|[2-9])
Python测试:
z = re.compile(r"(?<!-)(\d\d+|[2-9])")
print(re.findall(z,"-1 1 2 5 -345 134 500"))
结果:
['2', '5', '45', '134', '500']
答案 2 :(得分:0)
这是一个复杂的案例:
test = ['10', '-10', '001', '000', '33', '-010', '010', '-1 001 02 005 -345 134 500']
[re.findall(r"(?<![0-9-])0*[2-9](?![0-9])|(?<![0-9-])(?:0*[1-9][0-9]{1,})(?![0-9])", t) for t in test]
# [['10'], [], [], [], ['33'], [], ['010'], ['02', '005', '134', '500']]
(?<![0-9-])0*[2-9](?![0-9])
匹配从2到9的单个数字正数; (?<![0-9-])(?:0*[1-9][0-9]{1,})(?![0-9])
匹配一个多位数的正数,包含和超过十年的并非所有数字都应该为零这可以简化为:
[re.findall(r"(?<![0-9-])0*(?:[2-9]|[1-9][0-9]+)(?![0-9])", t) for t in test]
# [['10'], [], [], [], ['33'], [], ['010'], ['02', '005', '134', '500']]
答案 3 :(得分:0)
如果您希望仅匹配整数,可以尝试以下操作:
[1-9]\d+|[2-9]
它包含两部分:第一部分检查它是否是2到9之间的单个数字。第二部分匹配以1或更多开头的任何2+数字。这与01
,00
或5e3
等数字不匹配。
答案 4 :(得分:0)
null
答案 5 :(得分:-1)
有类似的答案,但这个应该是正确的
>>> print(re.search(r'm\\&', 'm\&').group())
m\&