<p>为什么不:</p>
<pre><code>a = ["paul Parthipan","paul","sdds","sdsdd"]
last_name = "Parthipan"
if any(last_name in ai for ai in a):
print "matched"
</code></pre>
<p>这一部分的目的是什么:</p>
<pre><code>...
import re
my_regex = r"(?mis){0}".format(re.escape(last_name))
...
</code></pre>
<p>编辑:</p>
<p>我只是太瞎了,看不清你需要正则表达式干什么。如果你能给出一些真实的输入和输出,那就最好了。这是一个小例子,也可以这样做:</p>
<pre><code>a = ["paul Parthipan","paul","sdds","sdsdd",'Mala_Koala','Czarna,Pala']
last_name = "Parthipan"
names=[]
breakers=[' ','_',',']
for ai in a:
for b in breakers:
if b in ai:
names.append(ai.split(b))
full_names=[ai for ai in names if len(ai)==2]
last_names=[ai[1] for ai in full_names]
if any(last_name in ai for ai in last_names):
print "matched"
</code></pre>
<p>但如果真的需要regex部分,我无法想象如何找到'(?“Parthipan”中的“Parthipan”。最简单的方法是反向“Parthipan”in'(?(mis)Parthipan'。就像这里。。。你知道吗</p>
<pre><code>import re
a = ["paul Parthipan","paul","sdds","sdsdd",'Mala_Koala','Czarna,Pala']
last_name = "Parthipan"
names=[]
breakers=[' ','_',',']
for ai in a:
for b in breakers:
if b in ai:
names.append(ai.split(b))
full_names=[ai for ai in names if len(ai)==2]
last_names=[r"(?mis){0}".format(re.escape(ai[1])) for ai in full_names]
print last_names
if any(last_name in ai for ai in last_names):
print "matched"
</code></pre>
<p>编辑:</p>
<p>嗯,有了正则表达式,你几乎没有可能。。。你知道吗</p>
<pre><code>import re
a = ["paul Parthipan","paul","sdds","sdsdd",'jony-Parthipan','koala_Parthipan','Parthipan']
lastName = "Parthipan"
myRegex = r"(?mis){0}".format(re.escape(lastName))
strA=';'.join(a)
se = re.search(myRegex, strA)
ma = re.match(myRegex, strA)
fa = re.findall(myRegex, strA)
fi=[i.group() for i in re.finditer(myRegex, strA, flags=0)]
se = '' if se is None else se.group()
ma = '' if ma is None else ma.group()
print se, 'match' if any(se) else 'no match'
print ma, 'match' if any(ma) else 'no match'
print fa, 'match' if any(fa) else 'no match'
print fi, 'match' if any(fi) else 'no match'
</code></pre>
<p>输出,只有第一个看起来没问题,所以只有检索给出适当的解决方案:</p>
<pre><code>Parthipan match
no match
['Parthipan', 'Parthipan', 'Parthipan', 'Parthipan'] match
['Parthipan', 'Parthipan', 'Parthipan', 'Parthipan'] match
</code></pre>