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

时间:2017-04-23 20:02:20

标签: regex 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)

1 个答案:

答案 0 :(得分:1)

您不会在Room #____,单词和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。如果您需要转到Last last ,请将*?替换为*(贪婪量词版)。