擅长:python、mysql、java
<p>使用python2.7有一个非常愚蠢的解决方案:</p>
<pre><code>import re
def findCommon(a,b):
allmatches=[]
for test in b:
if "*" in test or "?" in test:
reg=re.compile(test)
matches=[line for line in a for m in [reg.search(line)] if m]
else:
matches=[line for line in a if test==line]
allmatches.extend(matches)
c=set(allmatches)
return len(c)
def main():
content1=[]
content2=[]
content3=[]
with open('file1.txt','r') as f1:
content1=[line.strip() for line in f1]
with open('file2.txt','r') as f2:
content2=[line.strip() for line in f2]
with open('file3.txt','r') as f3:
content3=[line.strip() for line in f3]
print "file 2 :", findCommon(content1,content2),"tests found"
print "file 3 :", findCommon(content1,content3),"tests found"
main()
</code></pre>
<p>它首先将整个文件读入三个列表,然后在两个列表对上调用<code>findCommon</code>函数。你知道吗</p>
<p><code>findCommon</code>函数遍历第二个列表(文件)并检查测试名是否包含通配符(当然这假设只有两个通配符?和*,这可能是错误的)。如果是这样,它将在第一个文件上使用regex匹配,否则将使用简单的等式来查找匹配项。
<code>set</code>用于删除重复的匹配项。你知道吗</p>