2014-07-02 32 views
1

有一個格式爲「x:... y:... z:」的內容的字符串。 「,'...'代表任何字符排除':',並且可以包含任意數量的空格,我試圖將這樣的字符串拆分爲['x:...','y :...','z:...'],我怎樣才能在Python中做到這一點?在python中識別'x:... y:... z:...'的正則表達式

例如字符串:

'name: myname\n\naddress: myaddress1\nmyaddress2\n\nmyadress3\ncontact:mycontact\n' 

我想要得到的是:

['name: myname\n\n', 'address: myaddress1,\nmyadress2,\n\nmyadress3\n', 'contact:mycontact\n'] 
+1

'myadress3'從哪裏來? – falsetru

+0

對不起,我已經糾正它。 – vts

回答

6

re.compile('\w+:[^:]*?(?=\w+:|$)')

含義

  1. 匹配一個或多個單詞字符用冒號
  2. 匹配一切不是一個冒號懶洋洋地
  3. 找到一個或多個單詞字符和一個冒號或行

Demo

2

捕捉年底除了:任何字符不會被視爲有用它將包括換行符和address。看來您的實際要求是:將所有文本匹配到下一行包含冒號的開頭。下面是一個方法:

re.split("\n+(?=.*:)", s.strip()) 

圖案的意思是「一組換行,接着含有結腸任何文本的」。輸入被剝離,以便最後的換行符不會包含在最終結果項目中。

+0

我刪除了我的評論,花了幾分鐘嘗試添加myaddress3我自己,意識到它不存在! –

相關問題