我試圖提取所有那些括號內如下數字:匹配括號的數字的正則表達式
[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