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

3

这可能是一个比较简单的问题,但我找不到足够简单易懂的例子(对不起,我对正则表达式还很陌生)。

我正在编写一些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个回答

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

在字符类后面加上 * 表示匹配 0 次或多次该字符类。

2

尝试

float\[\d*\]

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


0

+ 运算符需要至少一个它所应用的实例,而您的第三个选项没有。您需要 * 运算符,它是 0 或更多。因此:

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

0

尝试:

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

+表示一个或多个元素,*表示零个或多个元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接