Python 读取文本文件。根据模式搜索文本,并在另一个文本文件中打印所有匹配项

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"

我希望您能帮助我编写一个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")
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