Python 3.6 中的正则表达式搜索用法

Regular expression search usage in Python 3.6

我正在使用 Python 3.6,并且有几千个文本文档,我已将它们从 PDF 文件扫描到 python 3 词典中作为字符串。每个文档都是单个字符串的单独字典条目。我正在尝试使用正则表达式搜索从每个页面中提取名称和地址信息。我已经确定姓氏总是以“Room #______”开头,然后是“Last/”我已经尝试过这样做,但它似乎不起作用。我一点也不熟悉环视结构。谁能告诉我我做错了什么?我的最终代码将有几个这样的搜索,这只是第一个。

memberRecord = memberData[1]
memberRegex = re.compile(r'''(
    (?<=Room #______)\w+(?=Last)
    $
    )''', re.VERBOSE)
mo = memberRegex.search(memberRecord)

您不考虑 Room #____、you word 和 Last 之间的任何空格或非单词字符。通过 mo.group(1):

找到匹配项后,可以访问您需要的值
memberRegex = re.compile(r'Room #______(.*?)Last', re.DOTALL)
mo = memberRegex.search(memberRecord)
if mo:
    print(mo.group(1))

请注意,re.DOTALL 标志将允许 . 跨行匹配,并且 *? 惰性量词将匹配尽可能少的任何字符,直到第一个 Last。如果您需要找到 Lastlast 出现,请将 *? 替换为 *(贪婪量词版本)。