2016-08-21 62 views
-3

提取以數字開頭的所有行的正則表達式是什麼?查找以數字開頭的所有行

我知道^字符是用來匹配行的開頭的任何東西,但我沒有構建它是正確的。

這是我曾嘗試:

re.findall('^[0-9]+',mystring). 
+3

所以發生了什麼事?你的輸入是什麼,你的輸出是什麼,你試圖解決什麼問題,... – UnholySheep

+3

你忘記了'MULTILINE'修飾符和'。*'以匹配其餘的行。但是,這不是最好的方法。用'\ n'分割並遍歷這些行,檢查第一個字符是否是數字。見http://ideone.com/dO4AYB –

+0

^^是。這正是我所要做的。 – idjaw

回答

2

我猜你想匹配整個行,但它只是匹配的起始編號。您需要包含貪婪通配符以及多行參數以告訴它您想要搜索多行。嘗試:

re.findall('^[0-9].*', mystring, re.MULTILINE) 
+0

在[0-9]'之後使用'+'沒有意義。即使沒有它,它也會工作。 –

+0

你是對的。我只是複製了這個問題的代碼,並且修復了這個問題,而沒有仔細查看。 – gowrath

3

你忘了re.MULTILINE改性劑和.*[0-9]後,該行的其餘部分相匹配。如果你使用正則表達式,你可以使用r"(?m)^[0-9].*"。但是,這不是最好的方法。用\ n拆分並遍歷行,檢查第一個字符是否是數字。

這裏是我建議:

with open('file', 'r') as f: 
    for line in f: 
     if len(line) > 0 and line[0].isdigit(): 
      print(line) 

this Python demo

+2

你的意思是如果len(line)> 0和line [0] .isdigit()正確嗎?你的解決方案導致索引超出範圍 –

+0

@PrashantBhanarkar是的,它應該是'len(line)> 0',而不是'line [0]'。 –

+0

對不起,我讓孩子們睡覺....修復。 –

相關問題