Python的正则表达式在同一行中找到的短语
问题描述:
我的成绩单是这样的:Python的正则表达式在同一行中找到的短语
speaker1 (caller): hello.
speaker2 (agent): thank you for calling.
speaker1 (caller): I need some help with my account 3429.
speaker2 (agent): Sure let me help.
他们是“的形式,speakerN(主叫或代理)”的。我需要编写一个正则表达式来获得呼叫者和座席对话列表。因此,对于上面的例子中,我将输出:
['(caller): hello. ', '(agent): thank you for calling', '(caller): I need some help with my account 3429.', '(agent): Sure let me help.']
这是我到目前为止有:
aList = re.findall('speaker. (.*) speaker.|$', transcript)
print(aList)
我知道有一个在前面的speakerN,一些文字,我需要捕捉,然后结尾处的另一个扬声器N(指示新的列表)或行结束。这是我试图捕获的逻辑,但它将整个脚本放入一个列表元素中,并在第二个列表中放入一个空字符串。任何帮助,将不胜感激。
答
使用aList = re.findall('speaker\d+\s(.*?)(?=\sspeaker|$)', transcript)
.*?
将马上停止匹配时,发现另一扬声器的发生,而.*
将保持匹配任何字符直到最后一次出现。希望能帮助到你。
编辑:speaker \ d +,。将只匹配一个字符。
编辑:如果单词'说话者'进入对话之间不好。因此,使用
aList = re.findall('speaker\d+\s*(.*?)(?=\sspeaker\s*\(|$)', transcript)
're.findall(R '\(*',S)' –