2017-04-11 63 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 /接受答案。 –

相關問題