获取字符串,直到遇到特定类型的字符串

时间:2014-02-14 00:20:20

标签: python regex string pattern-matching

我对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))

我被困在这一段时间了。我试着谷歌搜索它,但无济于事。任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:3)

这是你需要的正则表达式:

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

部分说明:

  • [A-Z]+:与发言人匹配
  • .*?符合他们说的话;使用?(非贪婪),因此它只匹配下一个发言者
  • (?=[A-Z]+:|$)断言,在说话者的行之后,我们有下一个发言者或字符串的结尾((?=)是一个正面的先行,它只做一个断言但不放字符串进入你的比赛)