2017-04-11 39 views
1
import re 
fileList = 
['notamatch','RC_test_CN_SK','test_SLU','test_CO','test_UL','SC_test_SRV'] 
for file in fileList: 
    re.findall('\w+test\w+',file) 
for file in fileList: 
    re.findall('\Atest\w+',file) 

循环的第一个输出'RC_test_CN_SK'和'SC_test_SRV'。 第二个for循环打印'test_SLU','test_CO'和'test_UL'。如何获得字符串,如果子字符串匹配在开始或中间,在Python的重新?

如何做一个re.findall搜索并获取我想要的五个文件?

+1

我没有看到任何打印语句 –

+0

我可以”弄清楚所发现的一切是关于什么的?你想匹配什么? 'RE_nottest_CN_SK'是否进入或退出? – tdelaney

+0

你想要什么不同只是''测试'在文件名'? – tdelaney

回答

0

您可以执行使用你的例子正则表达式或操作|多次搜索,您可以执行以下循环:如果任何\w+test\w+\Atest\w+发现

for file in fileList: 
    re.findall('\w+test\w+|\Atest\w+',file) 

此查询将匹配。

+0

这对我来说在python shell中失败了。 – lasingallday

1

测试,如果你的价值观开始从字符串的开头0+字字符,然后包含test

import re 
fileList = ['notamatch','RC_test_CN_SK','test_SLU','test_CO','test_UL','SC_test_SRV'] 
for file in fileList: 
    if re.search(r'^\w*test', file): 
     print(file) 
# => ['RC_test_CN_SK','test_SLU','test_CO','test_UL','SC_test_SRV'] 

Python demo

+1

这就是我一直在寻找的!谢谢@Wiktor。 – lasingallday

+0

很高兴我能帮到你。那么请考虑upvoting /接受答案。 –

相关问题