擅长:python、mysql、java
<p>你的代码有一些问题。首先,需要将expr与list元素(<code>x</code>)匹配,而不是与整个列表(<code>myList</code>)匹配。其次,为了在表达式中插入变量,必须使用<code>+</code>(字符串连接)。最后,使用原始文本(<code>r'\W</code>)正确地在expr中插入斜杠:</p>
<pre><code>import re
myList = ['test;cow', 'one', 'two', 'three', 'cow.', 'cow', 'acow']
myString = 'cow'
indices = [i for i, x in enumerate(myList) if re.match(r'\W*' + myString + r'\W*', x)]
print indices
</code></pre>
<p>如果myString可能包含特殊的regexp字符(如斜线或点),则还需要对其应用<code>re.escape</code>:</p>
<pre><code>regex = r'\W*' + re.escape(myString) + r'\W*'
indices = [i for i, x in enumerate(myList) if re.match(regex, x)]
</code></pre>
<p>正如评论中指出的,以下可能是更好的选择:</p>
<pre><code>regex = r'\b' + re.escape(myString) + r'\b'
indices = [i for i, x in enumerate(myList) if re.search(regex, x)]
</code></pre>