2014-01-30 115 views
-5

前3個數字我如何可以提取前3個數字字符串:提取從字符串

在:

"Box 123 (NO) 456"

出來:

123

+0

更重要的是,如果輸入的是什麼'「盒子1234(NO)567」 '? –

+0

數字或數字?如果輸入是「A 1 BEE 23 SEE 42 D''怎麼辦? – eyquem

回答

3

只要搜索\d{3}並抓住第一場比賽:

match = re.search(r'\d{3}', inputstring) 
if match: 
    print match.group(0) 

演示:

>>> import re 
>>> inputstring = "Box 123 (NO) 456" 
>>> match = re.search(r'\d{3}', inputstring) 
>>> if match: 
...  print match.group(0) 
... 
123 

注意上面一個子串匹配;如果您有一個長度爲四位數的數字,它將匹配該數字的前三位數字。

你的帖子是稀疏的細節;讓我們假定上面是不夠的,但是,你的號碼是由空格分隔,那麼你可以通過使用\b錨匹配正是 3個數字:

match = re.search(r'\b\d{3}\b', inputstring) 

匹配只有 3非單詞字符之間的數字,其(開始或字符串,空格,標點符號結束等任何不是字母或數字或下劃線):

>>> re.search(r'\b\d{3}\b', inputstring) 
<_sre.SRE_Match object at 0x106c4f100> 
>>> re.search(r'\b\d{3}\b', "Box 1234") 
>>> re.search(r'\b\d{3}\b', "Box 123") 
<_sre.SRE_Match object at 0x106c4f1d0> 
+0

''match''不是''re.match'',但使用混淆名稱並不是一個好習慣,無論如何 – eyquem

+2

@eyquem:這是一個MatchObject引用,這個名字是非常常用的。 –

+0

_「由於複製傳播導致錯誤不成立」_甘地。 – eyquem