当前位置:  开发笔记 > 编程语言 > 正文

正则表达式匹配文件名和文件扩展名的开头

如何解决《正则表达式匹配文件名和文件扩展名的开头》经验,为你挑选了5个好方法。

什么是匹配字符串(在本例中为文件名)的正则表达式,以"运行"开头,文件扩展名为".py"?

正则表达式应匹配以下任何一项:

RunFoo.py
RunBar.py
Run42.py

它不应该匹配:

myRunFoo.py
RunBar.py1
Run42.txt

我正在寻找的SQL等价物... LIKE 'Run%.py' ....



1> Brian..:

对于正则表达式,您将使用:

re.match(r'Run.*\.py$')

快速解释:

.意味着匹配任何角色.

*表示匹配前一个字符的任何重复(因此.*表示任何字符序列)

\是逃避显式点的逃脱

$表示"字符串结尾",因此我们不匹配"Run_foo.py.txt"

但是,对于此任务,您最好使用简单的字符串方法.即.

filename.startswith("Run") and filename.endswith(".py")

注意:如果你想要不区分大小写(即匹配"run.PY"以及"Run.py"),请使用正则表达式的re.I选项,或转换为特定的大小写(例如filename.lower())在使用字符串方法之前


1.你不必为python正则表达式匹配指定行的开头?2.*为零或更多匹配(即Run.py可以接受)

2> Rob Howard..:

警告:

jobscry的答案("^ Run.?.py $")不正确(例如,不匹配"Run123.py").

orlandu63的回答("/ ^ Run =\w]*?.py$/")与"RunFoo.Bar.py"不匹配.

(我没有足够的声誉发表评论,抱歉.)



3> Jerub..:

我真的不明白你为什么要用正则表达式来解决这个'问题'.您只是想找到以'Run'开头的所有.py文件.所以这是一个简单的解决方案,无需编译正在运行的正则表达式:

import os
for filename in os.listdir(dirname):
    root, ext = os.path.splitext(filename)
    if root.startswith('Run') and ext == '.py':
        print filename



4> Rob Howard..:
/^Run.*\.py$/

或者,在python中具体:

import re
re.match(r"^Run.*\.py$", stringtocheck)

这将匹配"Runfoobar.py",但不匹配"runfoobar.PY".为了使它不区分大小写,改为使用:

re.match(r"^Run.*\.py$", stringtocheck, re.I)



5> Simon Pevere..:

您不需要正则表达式,可以使用glob,它可以使用通配符,例如Run * .py

例如,要将这些文件保存在当前目录中...

import os, glob
files = glob.glob( "".join([ os.getcwd(), "\\Run*.py"]) )

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有