Python复杂字符串的正则表达式

时间:2014-01-15 00:10:20

标签: python regex

所以我正在从网页上抓取数据,收到的数据通常如下:

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 个答案:

答案 0 :(得分: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