正则表达式是什么,可以用来匹配以“Run”开头并且文件扩展名为“.py”的字符串(在这种情况下是文件名)?
该正则表达式应该匹配以下任何一种情况:
RunFoo.py
RunBar.py
Run42.py
它不应该匹配:
myRunFoo.py
RunBar.py1
Run42.txt
我要查找的SQL等价语句是 ... LIKE 'Run%.py' ...
。
正则表达式使用:
re.match(r'Run.*\.py$')
快速解释:
但是,对于此任务,您可能最好使用简单的字符串方法。即。
filename.startswith("Run") and filename.endswith(".py")
注意:如果你想实现大小写不敏感(例如匹配 "run.PY" 和 "Run.py"),使用正则表达式的 re.I 选项,或在使用字符串方法之前将其转换为特定大小写(例如 filename.lower())。
我不是很明白为什么你需要正则表达式来解决这个“问题”。你只需要找到以“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.*\.py$/
或者,特别是在Python中:
import re
re.match(r"^Run.*\.py$", stringtocheck)
这个正则表达式将匹配 "Runfoobar.py",但不会匹配 "runfoobar.PY"。为了不区分大小写,可以使用以下表达式:
re.match(r"^Run.*\.py$", stringtocheck, re.I)
您不需要正则表达式,可以使用glob,它可以接受通配符,例如Run*.py
例如,要获取当前目录中的这些文件...
import os, glob
files = glob.glob( "".join([ os.getcwd(), "\\Run*.py"]) )
>>> import re
>>> regex = '^Run(?P<name>.*)\.py$'
>>> m = re.match(regex, 'RunFoo.py')
>>> m.group('name')
'Foo'
(额外的部分是括号和它们之间的所有内容,除了“.*”以外,这与Rob Howard的答案相同)
这可能不完全符合文件命名标准,但是就这样吧:
/^Run[\w]*?\.py$/
也许:
^Run.*\.py$
只是一个快速尝试