Python 读取文本文件。根据模式搜索文本,并在另一个文本文件中打印所有匹配项
我希望您能帮助我编写一个python代码来读取文本文件。根据图案搜索文本,并将匹配的文本打印到另一个文本文件中 =示例文件内容= 1111/app/abc.jsf111。asdvvas/applet。本文是/apple.jsf,其中包含apples。此外,此文本可以包含/app.jsf ==模式== /app*.jsf ==匹配项== /app/abc.jsf /apple.jsf /app.jsf 这是我的密码:Python 读取文本文件。根据模式搜索文本,并在另一个文本文件中打印所有匹配项,python,regex,text-files,Python,Regex,Text Files,我希望您能帮助我编写一个python代码来读取文本文件。根据图案搜索文本,并将匹配的文本打印到另一个文本文件中 =示例文件内容= 1111/app/abc.jsf111。asdvvas/applet。本文是/apple.jsf,其中包含apples。此外,此文本可以包含/app.jsf ==模式== /app*.jsf ==匹配项== /app/abc.jsf /apple.jsf /app.jsf 这是我的密码: import re source = open("test.txt", "r"
import re
source = open("test.txt", "r")
dest = open("op.txt", "w")
pattern = re.compile('/app*jsf')
for line in source.readlines():
matches = pattern.findall(line)
for word in matches:
dest.write(line+"\n")
dest.close()
我的输出文件(op.txt)为空
应该有用
regex("app*")# will match ap, app, appppp, appppppppppp
但是,在初始ap之后,它将不匹配除p之外的任何内容,因为在正则表达式中,星号(*
)表示0或更多,它与操作系统目录搜索中的通配符不同替换:
pattern = re.compile('/app*jsf')
与:
re.compile('/app*jsf')
仅匹配/apjsf、/appjsf、/apppjsf、/appppjsf等不需要且可能不在文本文件中的内容。这就是文件为空的原因。Regex应该是/app.*jsf
p*
是“0个或多个p字符”。您需要/app.*jsf
*
=任何字符的零个或多个。可以将*
更改为*?
以使其不贪婪。
pattern = re.compile('/app*jsf')
pattern = re.compile('/app.*jsf') # .* means any character any number of times