如何生成一个regex,它将匹配任何以.rtf结尾的文件?

2024-05-16 09:56:31 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在做一个项目,在这个项目中,我必须编写一个程序,打开文件夹中的所有.rtf文件,搜索与用户提供的正则表达式匹配的任何行,结果必须打印到屏幕上。你知道吗

代码很简单,但是我很难编写一个正则表达式,它可以匹配任何以.rtf结尾的文件。你知道吗

下面是一个字符串,其中包含文件夹中的所有文件,Python将在其中搜索以.rtf结尾的文件:

rxn of glucose.png Screen Shot 2017-07-17 at 8.25.30 AM.png Screen Shot 2017-08-18 at 11.23.21 AM.png Screen Shot 2017-08-18 at 11.36.27 AM.png Screen Shot 2017-08-19 at 6.06.19 AM.png SSS.rtf Untitled 2.rtf Untitled 3.rtf Untitled 4.rtf Untitled.rtf。你知道吗

我试过很多正则表达式,比如:

1)(\w+\.rtf)

看看它的结果:https://regex101.com/r/oZzN6T/1

2)[a-zA-Z0-9].rtf

https://regex101.com/r/RaeL0Z/1

3).+\.rtf

https://regex101.com/r/8hRIGo/1

期望的结果是:Untitled 2.rtf Untitled 3.rtf Untitled 4.rtf Untitled.rtf SSS.rtf但是上面的一些正则表达式匹配这些文件的某些部分,而其他正则表达式匹配整个文本本身!你知道吗

这些正则表达式都不能正常工作。我明白为什么他们不工作,但我不能解决他们。我应该如何修改它们,或者新的正则表达式应该是什么来匹配给定字符串中扩展名为.rtf的文件?你知道吗


Tags: 文件项目字符串https文件夹compng结尾
2条回答

我想说的是,这看起来像是python的工作,但我想用regex来回答您的问题:

((?<=\.\w{3} )|^)[\w ]+\.rtf

这将成功地找到扩展名为“.rtf”的所有文件,甚至在字符串的开头,方法是开始查找最新文件名的结尾或字符串的开头。但是,这确实假设所有的文件扩展名都是3个字符长。如果您可能有长度为2的文件扩展名(例如,*.7z)或其他文件扩展名,则应在第一个开括号后添加(?<=\.\w{2} )|(或其他文件长度的任何内容)。这会给你:

((?<=\.\w{2} )|(?<=\.\w{3} )|^)[\w ]+\.rtf

匹配所有以.rtf结尾的不区分大小写的可打印字符

/^[ -~]\.rtf$/i

相关问题 更多 >