Python正则表达式提取冒号前目标内容的问题求助
解决方法
你需要匹配的是冒号前最后一段包含字母、空格的内容(含冒号),之前用的正则\w*(?=.*:)会匹配所有满足“后面有冒号”的单词片段,所以才返回大量无关内容。
推荐使用以下正则方案:
import re # 示例文本集合 texts = [ "Morgan Stanley.Erik Woodring: ", "market.Operator: ", "to acquire?Tim Cook:" ] # 正则模式:定位结尾处由字母、空格组成且以冒号收尾的内容 pattern = r'([\w\s]+:)\s*$' for text in texts: match = re.search(pattern, text) if match: print(match.group(1))
运行结果:
Erik Woodring: Operator: Tim Cook:
正则说明
[\w\s]+:匹配1个及以上的字母、数字、下划线或空格,覆盖名称里的空格场景::精准匹配冒号本身\s*$:匹配结尾处的任意空白字符(如果存在),确保定位到内容末尾
如果你的文本中名称前的分隔符固定是.或?,也可以用更精准的正向断言:
pattern = r'(?<=[.?])[\w\s]+:'
这个模式会直接匹配.或?之后的名称+冒号,同样能得到预期结果。
内容的提问来源于stack exchange,提问作者krish
相关产品推荐
相关产品推荐

