Ray*_*ega 18 python regex sql sql-like
什么是匹配字符串(在本例中为文件名)的正则表达式,以"运行"开头,文件扩展名为".py"?
正则表达式应匹配以下任何一项:
RunFoo.py
RunBar.py
Run42.py
Run Code Online (Sandbox Code Playgroud)
它不应该匹配:
myRunFoo.py
RunBar.py1
Run42.txt
Run Code Online (Sandbox Code Playgroud)
我正在寻找的SQL等价物... LIKE 'Run%.py' ....
Bri*_*ian 39
对于正则表达式,您将使用:
re.match(r'Run.*\.py$')
Run Code Online (Sandbox Code Playgroud)
快速解释:
但是,对于此任务,您最好使用简单的字符串方法.即.
filename.startswith("Run") and filename.endswith(".py")
Run Code Online (Sandbox Code Playgroud)
注意:如果你想要不区分大小写(即匹配"run.PY"以及"Run.py"),请使用正则表达式的re.I选项,或转换为特定的大小写(例如filename.lower())在使用字符串方法之前
Rob*_*ard 15
警告:
(我没有足够的声誉发表评论,抱歉.)
Jer*_*rub 13
我真的不明白你为什么要用正则表达式来解决这个'问题'.您只是想找到以'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
Run Code Online (Sandbox Code Playgroud)
/^Run.*\.py$/
Run Code Online (Sandbox Code Playgroud)
或者,在python中具体:
import re
re.match(r"^Run.*\.py$", stringtocheck)
Run Code Online (Sandbox Code Playgroud)
这将匹配"Runfoobar.py",但不匹配"runfoobar.PY".为了使它不区分大小写,改为使用:
re.match(r"^Run.*\.py$", stringtocheck, re.I)
Run Code Online (Sandbox Code Playgroud)
您不需要正则表达式,可以使用glob,它可以使用通配符,例如Run * .py
例如,要将这些文件保存在当前目录中...
import os, glob
files = glob.glob( "".join([ os.getcwd(), "\\Run*.py"]) )
Run Code Online (Sandbox Code Playgroud)