2013-02-16 99 views
0

是,有沒有更好的方法來提取字符串:從字符串中提取的正則表達式

'Found 1 items\ndrwxr-xr-x - hadoop supergroup   0 2013-02-16 13:21 /user/hadoop/wiki\n' 

琴絃都像:

'Found **n** items\n**permissions** - **username** **group**   **notsurewhatthisis** **date** **time** **folders(or file)**\n' 

現在..我分裂它:

line = line.split() 
num_items = int(line[1]) 
permissions = line[3] 

等。

所以基本上這是一個沒有更簡單的解決方案..

試圖看看是否有一個「蟒蛇」的方式來做到這一點。

+1

正則表達式談論有限狀態自動機的一種特殊表示來匹配字符串。請參閱http://en.m.wikipedia.org/wiki/Regular_expression。你並沒有用它來表達這一點,使你的問題讓其他人感到困惑。 – 2013-02-16 23:05:12

+0

@Sylvain Defresne我剛剛提出了3個答案,因爲已經完成了上述評論。 – eyquem 2013-02-16 23:12:58

回答

2
ss = ('Found 1 items\n' 
     "drwxr-xr-x - hadoop supergroup   " 
     '0 2013-02-16 13:21 /user/hadoop/wiki\n') 

('Found **n** items\n' 
'**permissions** - **username** **group**   ' 
'**notsurewhatthisis** **date** **time** **folders(or file)**\n') 

import re 

r = re.compile('Found +(\d+) +items *\n *(.+?) *- ') 

print r.search(ss).groups() 

ss是一個字符串
'Found +(\d+) +items *\n *(.+?) *- '被用作圖案,用於創建一個正則表達式對象
r是正則表達式一個字符串,一個對象,它是不是字符串,通常使用