我对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))
我被困在这一段时间了。我试着谷歌搜索它,但无济于事。任何帮助将不胜感激。感谢。
答案 0 :(得分:3)
这是你需要的正则表达式:
[A-Z]+:.*?(?=[A-Z]+:|$)
部分说明:
[A-Z]+:
与发言人匹配.*?
符合他们说的话;使用?
(非贪婪),因此它只匹配下一个发言者(?=[A-Z]+:|$)
断言,在说话者的行之后,我们有下一个发言者或字符串的结尾((?=)
是一个正面的先行,它只做一个断言但不放字符串进入你的比赛)