阅读文本文件。搜索基于模式的文本并在另一个文本文件中打印所有匹配项

时间:2014-12-02 19:22:17

标签: python regex text-files

我希望您协助编写python代码来读取文本文件。根据模式搜索文本,并将匹配的文本打印到另一个文本文件。

=示例文件内容= 1111 /应用程序/ abc.jsf111。 asdvvas /小程序。这个文本是/apple.jsf,它有苹果。此外,此文本可能有/app.jsf

== Pattern ==

/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)为空白。

2 个答案:

答案 0 :(得分:0)

pattern = re.compile('/app[^\.]*jsf')
#or maybe just
pattern = re.compile('/app.*jsf') #if your filename can have multiple periods in it eg app.app.app.jsf

应该有用......

regex("app*")# will match ap, app, appppp, appppppppppp

然而,在初始ap之后它不会与p以外的任何东西匹配,因为在正则表达式中,星号(*)表示 0或更多,它与通配符不同操作系统目录搜索

答案 1 :(得分:0)

替换:

pattern = re.compile('/app*jsf') 

使用:

pattern = re.compile('/app.*jsf') # .* means any character any number of times

re.compile('/app*jsf')仅匹配 / apjsf / appjsf / apppjsf / appppjsf 和所以这是不希望的,可能不会出现在您的文本文件中。这就是空文件的原因。