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
。如果您需要找到 Last
的 last 出现,请将 *?
替换为 *
(贪婪量词版本)。
我正在使用 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
。如果您需要找到 Last
的 last 出现,请将 *?
替换为 *
(贪婪量词版本)。