2014-01-15 28 views
2

從網頁所以我刮的數據和接收數據通常如下:Python的長期複雜的字符串的正則表達式

233989 001 0 / 49 T R 4:15 PM - 5:30 PM 205 IST Building 01/13/14 - 05/02/14 Controls View (814) 865-8947 266200 002 0 / 43 M W F 10:10 AM - 11:00 AM 110 IST Building 01/13/14 - 05/02/14 Controls View (814) 865-8947

我試圖從圖案分割數據#### ##(6個號碼,即233989)來表示當前數據線(即(814) 865-8947),因爲我知道它會永遠與4號結束的,我想出了表達年底的電話號碼:

(^[0-9]{1,6}$[^[0-9]{1,4}$]*[0-9]{1,4}$+)+

雖然這似乎不起作用。任何人都可以伸出援手嗎?

回答

1

您可以使用此:

r'(\d{6}.*?\(\d{3}\) \d{3}-\d{4}) ?' 

然後重建它$1\n

像這樣:http://regex101.com/r/lG4gG5

的Python:

import re 

s = '233989 001 0/49 T R 4:15 PM - 5:30 PM 205 IST Building 01/13/14 - 05/02/14 Controls View (814) 865-8947 266200 002 0/43 M W F 10:10 AM - 11:00 AM 110 IST Building 01/13/14 - 05/02/14 Controls View (814) 865-8947' 
spl = re.split(r'(\d{6}.*?\(\d{3}\) \d{3}-\d{4}) ?', s) 
for line in spl: 
    print line 
+0

的作品就像一個魅力。從來沒有想過這樣做。謝謝 – pattmorter

+0

不客氣!很高興它的作品。 – brandonscript

+0

讓它更簡單一點,根本不需要第二個捕獲組。 – brandonscript