Python:在文件中找到regexp

Ser*_*gey 13 python regex

有:

f = open(...)  
r = re.compile(...)
Run Code Online (Sandbox Code Playgroud)

需要:
找一个大文件中第一个匹配正则表达式的位置(开始和结束)?
(从current_pos=...) 开始

我怎样才能做到这一点?


我想要这个功能:

def find_first_regex_in_file(f, regexp, start_pos=0):  
   f.seek(start_pos)  

   .... (searching f for regexp starting from start_pos) HOW?  

   return [match_start, match_end]  
Run Code Online (Sandbox Code Playgroud)

文件'f'预计会很大.

Gre*_*ill 31

搜索大文件的一种方法是使用mmap库将文件映射到大内存块.然后,您可以搜索它,而无需明确阅读它.

例如,类似于:

size = os.stat(fn).st_size
f = open(fn)
data = mmap.mmap(f.fileno(), size, access=mmap.ACCESS_READ)

m = re.search(r"867-?5309", data)
Run Code Online (Sandbox Code Playgroud)

这适用于非常大的文件(我已经为大小超过30 GB的文件完成了它,但如果你的文件超过GB或者两个,你需要一个64位的操作系统).