擅长:python、mysql、java
<p>你可以通过以下方式来匹配你想要的,而不是匹配你不想要的:
<code>^.*/(Accept|Integrate)$</code></p>
<p>现在,循环还有另一个问题:不能从正在迭代的列表中删除项!你需要做一个临时的结果列表。你知道吗</p>
<p>由于您似乎想“就地”筛选列表,因此可以使用以下方法:
<code>list[:] = tmp</code></p>
<p>代码如下:</p>
<pre><code>import re
def filtre(list):
tmp = []
for item in list:
# matchObject=re.search(r"Accept/.*/]", item) or re.search(r"(Integrate/.*/])", item)
if re.match(r"^.*/(Accept|Integrate)$", item):
tmp.append(item)
list[:] = tmp
input = ["c:/project1/main/Node/Accept/testCase1/Browse.c",
"c:/project1/main/Node/Accept/testCase2/navigate.c",
"c:/project1/main/Node/Accept/testCase2/save.c",
"c:/project1/main/Node/Accept/testCase4/search.c",
"c:/project1/main/Node/Accept",
"c:/project1/main/Node/Integrate",
"c:/project1/main/Node/Accept/destroy/fullCoverage/remove.py",
"c:/project1/main/Tree/Integrate/testCase1/Browse.c",
"c:/project1/main/Tree/Integrate"
]
filtre(input)
print '\n'.join(input)
</code></pre>
<p>结果:</p>
<pre><code>c:/project1/main/Node/Accept
c:/project1/main/Node/Integrate
c:/project1/main/Tree/Integrate
</code></pre>