除0或1之外的任何正数的正则表达式是什么

时间:2016-12-09 20:21:34

标签: python regex

应该允许:

99
10
100

不应该允许:

0
1

试试这个:

r"[^0-1]"

但它只需要从2到9的数字。

更新:

这就是我要找的:([2-9]|\d\d+)

6 个答案:

答案 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]

Try it online

它包含两部分:第一部分检查它是否是2到9之间的单个数字。第二部分匹配以1或更多开头的任何2+数字。这与01005e3等数字不匹配。

答案 4 :(得分:0)

null

答案 5 :(得分:-1)

有类似的答案,但这个应该是正确的

>>> print(re.search(r'm\\&', 'm\&').group())
m\&

在这里考试https://regex101.com/r/BHnvzC/3