正则表达式匹配[]之间的所有数字

时间:2014-04-16 16:35:38

标签: python regex

非常简单的正则表达式问题我的字符串可能看起来像:

  • [10]
  • [6378363] 30
  • [] 393

我喜欢它,所以它分别与10,6378363相匹配。

我试过像(\ d +)[^]这样的东西 (匹配1个或更多数字,因为我们知道第一个字符将永远是[) (最多))

但这只是匹配数字我假设我有正则表达式的语法错误,因为我只是在正则表达式垃圾!任何帮助都会很棒

3 个答案:

答案 0 :(得分:4)

应该是这样的:

\[(\d*)\]

正则表达式(\d+)[^]]会匹配数字,直到[出现,因此它不会捕获方括号之间的数字。 []是正则表达式中的特殊字符,因此应使用\进行转义。

>>> import re
>>> st = '[6378363]30'
>>> re.match('\[(\d*)\]', st).group(1)
'6378363'

答案 1 :(得分:4)

你可以使用这个:

import re

input = '[10] [6378363]30 []393'
print re.findall('\[(\d+)\]', input)

\d+表示一个或多个数字。这将确保避免[],因为它内部的数字为零。

答案 2 :(得分:0)

您正在寻找的正则表达式是:

\[(\d*)\]