Я пытаюсь выполнить проект «Поиск по регулярному выражению» из книги Automate boring stuff with python. Я попытался найти ответ, но мне не удалось найти связанный поток в 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("https://stackoverflow.com/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))
P.S. Я новичок в программировании и stackoverflow, поэтому вся помощь приветствуется. Также, если я нарушу правила поведения, пожалуйста, дайте мне знать, так что я буду знать лучше в следующий раз. Благодаря! – ananaa
Добро пожаловать в сообщество StackOverflow. Вам вообще не нужно группировать '. *% S. *' – revo
Спасибо, друг! Это был не первый случай, когда ненужные скобки разрушали мой код. – ananaa