2014-02-14 90 views
0

我是相當新的python和編程作爲一個整體。關於學習我的ABC。比方說,我有這樣一個字符串。獲取字符串,直到遇到一個特定類型的字符串

s = "DEALER:'S up, Bubbless? BUBBLES: Hey. DEALER: Well, there you go. JUNKIE: Well, what you got?DEALER: I got some starters."; 

我希望字符串結束,當遇到一個帶有大寫字母和冒號(:)的詞。然後創建一個新字符串來存儲另一個字符串。對於上面的字符串,我會得到

s1 = "DEALER:'S up, Bubbless? 
s2 = "BUBBLES: Hey." 
s3 = "DEALER: Well, there you go." 

等。

這是爲獲得這樣的話我正則表達式的代碼。

p = re.compile('([A-Z]*):') 
s = set(p.findall(l)) 

我一直堅持這一段時間。我嘗試了谷歌搜索,但無濟於事。任何幫助將不勝感激。謝謝。

回答

3

這是你所需要的正則表達式:

[A-Z]+:.*?(?=[A-Z]+:|$)

部分的解釋:

  • [A-Z]+:揚聲器
  • .*?匹配他們說行相匹配;使用?(非貪婪),所以只到下一位發言者
  • (?=[A-Z]+:|$)斷言,繼音箱的線,我們無論是下一位發言者或字符串的結尾((?=)匹配是一個積極的先行,只做一個斷言,但不會將字符串放入您的匹配中)
+0

非常感謝您! – user3078335

相關問題