如何用Python正则表达式提取PDF地址中冒号后的内容?
提取PDF中冒号后地址内容的正则方案
针对你从PDF提取的字符串,要捕获所有冒号:之后的地址内容(包括跨多行的情况),可以用以下正则表达式配合Python的re模块实现:
正则表达式及说明
(?<=:).*?(?=\n{2,}|\Z)
各部分作用:
(?<=:):正向断言,定位到冒号:的后方,不包含冒号本身.*?:非贪婪匹配任意字符(需配合re.DOTALL模式,让.能匹配换行符),直到遇到终止条件(?=\n{2,}|\Z):正向断言,匹配连续两个及以上换行(空行,用于分隔不同地址)或字符串结尾的位置,不包含这些终止符
Python代码示例
import re # 假设这是从PDF提取到的文本内容 pdf_extracted_text = """Alamat :Menara Bank Mega, Lantai 24, Jl. Kapten P Tendean Kav. 12-14A Alamat :JL USMAN NO. 42, RT 8/4, KEL. KELAPA DUA WETAN, KEC. PASAR REBO, JAKARTA TIMUR Alamat :JL. HR. RASUNA SAID KAV 1-2, GRAHA IRAMA LANTAI 6 KUNINGAN TIMUR- SETIABUDI JAKARTA SELATAN Alamat :GD. GRAHA PRATAMA LT.10, JL. MT. HARYONO KAV.15, TEBET AHUAlamat :GEDUNG BERITASATU PLAZA LT. 8, JL. JEND. GATOT SUBROTO KAV. 35-36""" # 匹配所有目标内容 matches = re.findall(r'(?<=:).*?(?=\n{2,}|\Z)', pdf_extracted_text, re.DOTALL) # 清理结果中的多余空白和换行 cleaned_addresses = [addr.strip() for addr in matches] # 输出结果 for idx, addr in enumerate(cleaned_addresses, 1): print(f"地址 {idx}:\n{addr}\n")
运行后会输出每个地址的干净内容,自动处理跨多行的情况,同时忽略冒号前的任意前缀(比如Alamat、AHUAlamat)。
内容的提问来源于stack exchange,提问作者htm_01
相关产品推荐
相关产品推荐

