使用正则表达式从文件名中创建一个包含多个可能字符串的列表[重复]

Posted

技术标签:

【中文标题】使用正则表达式从文件名中创建一个包含多个可能字符串的列表[重复]【英文标题】:Make a list with multiple possible strings from file names with regex [duplicate] 【发布时间】:2020-03-02 22:07:47 【问题描述】:

我想根据多个引用在一个文件夹中列出几个 PNG。因此,在列表中,我想要名称中包含字符串“7029113”或“7031503”的PNG。这就是我到目前为止所得到的,我只需要知道如何使用正则表达式进行 OR,而且我不确定我的通配符是否也错了。

render_path = "C:/BatchRender/Renaming"
os.chdir(render_path)
list_files = glob.glob("*.png")

r = re.compile(".*7029113.*" OR ".*7031503.*")
list_40 = list(filter(r.match, list_files))  

【问题讨论】:

"(".*7029113.*|.*7031503.*")"。通过将公共部分从组中取出(.*703.*),这可能会缩短。 如果使用re.search而不是re.match,则不需要.*前缀和后缀;仅匹配子字符串就足以产生 True 值。 如果您不想只搜索字符串开头的匹配项,请不要使用re.match。使用re.search。而且模式是基本的:word1|word2 【参考方案1】:

这是一种方法。

r = re.compile('.*(7029113|7031503).*')

【讨论】:

谢谢!你介意解释一下“.*”吗?我知道它是通配符,但我不明白为什么它不仅仅是点。 . 经常用于你想匹配“任何字符”的地方。请阅读以下文档以了解有关正则表达式的更多信息。 https://docs.python.org/3/howto/regex.html#matching-characters

以上是关于使用正则表达式从文件名中创建一个包含多个可能字符串的列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式匹配

使用正则表达式库在 C++ 中创建词法分析器?

从多个集合中创建所有可能的组合

10. 正则表达式匹配

刷题——正则表达式匹配

在 Perl 中创建正则表达式以提取值