我的字符串是一个抄本,我想捕捉说话人,特别是他们的第二个名字(只有完全大写时才需要匹配) 另外,我想在下一个演讲者开始之前匹配他们的演讲,我想最终在一个巨大的文本文件上循环这个过程。你知道吗
问题是match只返回一个match对象,即使有两个不同的说话者。此外,我还尝试了带有python风格的在线regex测试程序,但是它们返回的结果非常不同(不知道为什么?)。你知道吗
str = 'Senator BACK\n (Western Australia) (21:15): This evening I had the pleasure (...) Senator DAY\n (South Australia) (21:34): Well, what a week it h(...) '
pattern = re.compile("(:?(Senator|Mr|Dr)\s+([A-Z]{2,})\s*(\(.+?\))\s+(\(\d{2}:\d{2}\):)(.*))(?=Senator)")
for match in re.finditer(pattern, str):
print(match)
我想要两个匹配的对象,两个对象都有一个组来表示他们的姓氏和语音。值得注意的是,我还在线使用了Regex调试器,但是python风格在我的终端上为python提供了不同的结果。你知道吗
只需将regex替换为:
演示:https://regex101.com/r/gJDaWM/1/
对于当前的regex,您正在强制执行一个条件,即每个匹配都必须通过正向前瞻后跟
Senator
。你知道吗实际上,您可能需要将正面展望改为:
如果你想考虑
Mr
和Dr
在Senator
之上。你知道吗相关问题 更多 >
编程相关推荐