我试图提取所有那些括号内如下数字:匹配括号的数字的正则表达式
[1]
[3-13]
[15]
1
2
[]
我打算选择在上面的列表中前三。我想抓住
1
3-13
15
我想下面的正则表达式:\[[\d*-\d*]\]
我在Link测试出的正则表达式,但我得到被称为“坏字符范围”的错误。我究竟做错了什么?请帮忙。我是新来的正则表达式
我试图提取所有那些括号内如下数字:匹配括号的数字的正则表达式
[1]
[3-13]
[15]
1
2
[]
我打算选择在上面的列表中前三。我想抓住
1
3-13
15
我想下面的正则表达式:\[[\d*-\d*]\]
我在Link测试出的正则表达式,但我得到被称为“坏字符范围”的错误。我究竟做错了什么?请帮忙。我是新来的正则表达式
你不想一个字符类[]
,而是分组操作()
:
\[(\d+(?:-\d+)?)\]
打破下来:
\d+
匹配数字的前半部分(?:)
的非捕获父母-\d+
比赛破折号然后数字下半年?
使得下半年(内组)可选这种表达让你任何数量的与该列表作为值的列表,如果你想遍历可能是你可以使用re.finditer
:
>>> print re.findall("\[(\d|\d[-]?\d+?)\]", "[1] [3-13] [15] 1 2 []")
['1', '3-13', '15']
编辑:添加正确的答案
做这个'\ [[\ d - ] * \]' – mnciitbhu
你可能需要逃避短划线。看看这个答案 http://stackoverflow.com/questions/8833963/allow-dash-in-regular-expression – Abundance
@mnciitbhu:值得注意的是,你的正则表达式最终会比你期望的匹配更多(例如' [-3-3-3]'或'[]') – nneonneo