Python正则表达式-每行查找一个模式的正则表达式?

Python正则表达式-每行查找一个模式的正则表达式?,python,regex,expression,findall,Python,Regex,Expression,Findall,假设我在文件testFile中有以下几行: Test Line in File Test Line in File Test Line in File Test Line in File Line Test Line in File Line 是否可以执行re.findall,以允许我在每行中找到一个“模式”实例?例如,如果我执行len re.findallLine,testfile,0,程序将返回7。我希望它能退回5英镑。我正在考虑类似于Line.*\n的内容,但它仍将返回7。为了澄清,我想

假设我在文件testFile中有以下几行:

Test Line in File
Test Line in File
Test Line in File
Test Line in File Line
Test Line in File Line
是否可以执行re.findall,以允许我在每行中找到一个“模式”实例?例如,如果我执行len re.findallLine,testfile,0,程序将返回7。我希望它能退回5英镑。我正在考虑类似于Line.*\n的内容,但它仍将返回7。为了澄清,我想避免使用:

count = 0
with open(testFile, "r") as file:
    for line in file:
        re.match(pattern, testFile, 0)
        #etc

非常感谢您的帮助。

将整个文件加载到内存中执行re.findall没有意义,这样做会使您失去在找到第一个匹配时短路的能力

import re
with open('data.txt') as f:
    print sum(1 if re.search(r"Line", line) else 0 for line in f)  

对于这样一个简单的匹配,使用此

count = 0
with open(testFile, "r") as file:
    for line in file:
        if 'Line' in line:
            count += 1
…它使用了一个比我上次检查的使用正则表达式快8倍的标记。

你可以使用这个标记


然而,在这种情况下,我不鼓励使用正则表达式

这是个奇怪的问题。如果要计算匹配的行数,只需计算它们。如果一行中有多个匹配项,您希望返回什么作为匹配项?这回答了OP的问题,尽管搜索文件是一种低效的方法。重新搜索速度比行中的快吗?@1\u CR不,我假设OP有一个更复杂的regexp
count = 0
with open(testFile, "r") as file:
    for line in file:
        if 'Line' in line:
            count += 1
>>> s = """Test Line in File
... Test Line in File
... Test Line in File
... Test Line in File Line
... Test Line in File Line"""
>>> r = re.compile("^.*Line.*$", flags=re.MULTILINE)
>>> r.findall(s)
['Test Line in File',
 'Test Line in File',
 'Test Line in File',
 'Test Line in File Line',
 'Test Line in File Line']