匹配正则表达式中的可选数字

时间:2012-01-30 23:14:10

标签: python regex

这个可能很简单,但我找不到一个简单易懂的例子(对不起,我是RegEx的新手)。

我正在编写一些Python代码来搜索与以下任何示例匹配的任何字符串:

float[20]
float[7532]
float[]

所以这就是我到目前为止:

import re
p = re.compile('float\[[0-9]+\]')
print p.match("float[20]")
print p.match("float[7532]")
print p.match("float[]")

代码适用于第一种和第二种情况,但不适用于第三种情况(括号之间没有数字)。添加该条件的最佳方法是什么?

非常感谢!

4 个答案:

答案 0 :(得分:4)

p = re.compile('float\[[0-9]*\]')

在字符类之后加上*表示0或字符类的匹配。

答案 1 :(得分:2)

尝试

float\[\d*\]

\ d是[0-9]的快捷方式。 星号匹配字符类的0..n(任意数量)字符。

答案 2 :(得分:0)

+运算符至少需要一个应用它的实例,这是你的第三个选项所没有的。您希望*运算符为0或更大。所以:

p = re.compile('float\[[0-9]*\]')

答案 3 :(得分:0)

尝试:

import re
p = re.compile('float\[[0-9]*\]')
print p.match("float[20]")
print p.match("float[7532]")
print p.match("float[]")

+用于一个或多个元素,*用于零个或多个元素。