正则表达式只捕获0到85

时间:2014-02-25 18:50:39

标签: python regex

我想用0-85代替数字。现在我有0-89。     subject = re.sub(r'([0-8] \ w%?)','',subjectext)

当我做subject = re.sub(r'([0-8] [0-5]%?)','',subjectext) 正则表达式中断。

4 个答案:

答案 0 :(得分:3)

尝试这样的模式:

[1-7]?[0-9]|8[0-5]

这将匹配任意字符串,其中包含1到7之间的可选数字,后跟0到9 之后的数字,然后是0到5之间的数字。

如果您需要添加一个可选的%符号(未明确说明为必填项,但您的模式似乎表明您可能需要它),请使用以下命令:

([1-7]?[0-9]|8[0-5])%?

但是,上面的内容会匹配像9这样的较大字符串中的92之类的字符串。如果您不想这样做,您可能需要考虑使用lookarounds来确保匹配的子字符串前面没有或后跟另一个数字,如下所示:

(?<!\d)([1-7]?[0-9]|8[0-5])%?(?!\d)

答案 1 :(得分:1)

这个正则表达式怎么样?

[1-7]?\d|8[0-5]

答案 2 :(得分:1)

你想得到0到85之间的每个数字,所以每个数字都以0-7开头,然后是0-9或8,然后是1,2,3,4或5:

[1-7]?[0-9]|8[0-5]
# ^^^^^^^^^ ^^^^^^
  0 to 79  | 80 to 85

答案 3 :(得分:1)

考虑以下Regex ......

([0-7][0-9]|8[0-5])

祝你好运!