Python 使用正则表达式查找多行?

Python 使用正则表达式查找多行?,python,regex,python-3.x,Python,Regex,Python 3.x,我正试图从书中完成一个“Regex搜索”项目。我试图寻找答案,但在python中找不到相关的线程 任务是:“编写一个程序,打开文件夹中的所有.txt文件,并搜索与用户提供的正则表达式匹配的任何行。结果应打印到屏幕上。” 通过下面的编译,我设法找到了第一个匹配项 regex = re.compile(r".*(%s).*" % search_str) 我可以用打印机打印出来 print(regex.search(content).group()) 但是如果我尝试使用 print(regex.f

我正试图从书中完成一个“Regex搜索”项目。我试图寻找答案,但在python中找不到相关的线程

任务是:“编写一个程序,打开文件夹中的所有.txt文件,并搜索与用户提供的正则表达式匹配的任何行。结果应打印到屏幕上。”

通过下面的编译,我设法找到了第一个匹配项

regex = re.compile(r".*(%s).*" % search_str)
我可以用打印机打印出来

print(regex.search(content).group())
但是如果我尝试使用

print(regex.findall(content))
输出仅为输入的单词,而不是它们所在的整行。为什么
findall
不匹配整行,即使我是这样编译正则表达式的

我的代码如下

# Regex search - Find user given text from a .txt file
# and prints the line it is on

import re

# user input
print("\nThis program searches for lines with your string in them\n")
search_str = input("Please write the string you are searching for: \n")
print("")
# file input
file = open("/users/viliheikkila/documents/kooditreeni/input_file.txt")
content = file.read()
file.close()

# create regex
regex = re.compile(r".*(%s).*" % search_str)

# print out the lines with match
if regex.search(content) is None:
    print("No matches was found.")
else:
    print(regex.findall(content))

在python正则表达式中,括号定义了捕获组。(有关详细信息和说明,请参见)


findall
将只返回捕获的组。如果需要整行,则必须迭代python正则表达式中的
finditer

的结果,括号定义捕获组。(有关详细信息和说明,请参见)


findall
将只返回捕获的组。如果您需要整行代码,您必须迭代
finditer

p.S.的结果。我对编程和stackoverflow不熟悉,因此非常感谢您的帮助。另外,如果我违反了任何行为准则,请让我知道,这样下次我会知道得更清楚。谢谢欢迎来到StackOverflow社区。您根本不需要分组
*%s.*
谢谢,伙计!这不是第一次不必要的括号破坏我的代码。我不熟悉编程和stackoverflow,因此非常感谢您的帮助。另外,如果我违反了任何行为准则,请让我知道,这样下次我会知道得更清楚。谢谢欢迎来到StackOverflow社区。您根本不需要分组
*%s.*
谢谢,伙计!这不是第一次不必要的括号破坏我的代码。谢谢!这很有帮助。我通过删除括号让代码实际运行。谢谢你的链接,谢谢!这很有帮助。我通过删除括号让代码实际运行。谢谢你的链接。