擅长:python、mysql、java
<p>使用带单词边界的正则表达式(<code>\b</code>):</p>
<blockquote>
<p>Matches the empty string, but only at the beginning or end of a word.
A word is defined as a sequence of Unicode alphanumeric or underscore
characters, so the end of a word is indicated by whitespace or a
non-alphanumeric, non-underscore Unicode character. Note that
formally, <code>\b</code> is defined as the boundary between a <code>\w</code> and a <code>\W</code>
character (or vice versa), or between \w and the beginning/end of the
string. This means that <code>r'\bfoo\b'</code> matches <code>'foo'</code>, <code>'foo.'</code>, <code>'(foo)'</code>,
<code>'bar foo baz'</code> but not <code>'foobar'</code> or <code>'foo3'</code>.</p>
</blockquote>
<hr/>
<pre><code>string = "Alienshave just discovered a way to open cans"
arr = ["Aliens","bird","cactus","John Cena"]
import re
pattern = r'\b({})\b'.format('|'.join(arr)) # => \b(Aliens|bird|cactus|John Cena)\b
if re.search(pattern, string):
print(string)
# For the given `string`, above `re.search(..)` returns `None` -> no print
</code></pre>