title: Complex regular expression to capture specific words but not partial words
body: <p>I'm having trouble coming up with a regular expression that matches all instances of the given words but does not match partials. The text that I am scanning will be raw HTML.</p>
  
  <p>Here is my current regex:</p>
  
  <pre><code>/(|&gt;|^|;|,| )(detroit|to|christmas|holiday|test|his)(&lt;| |\.|;|,|\!|\?|\)|$)/i
  </code></pre>
  
  <p>That regex will match the words in bold:</p>
  
  <blockquote>
    <p>Always check Agile for the latest version of applicable Service and
    Installation procedures! The steps contained in this database are for
    Troubleshooting only, not for performing Service. This is not a
    controlled document and may not be distributed <strong>to</strong> non-Stryker
    personnel</p>
    
    <p><strong>christmas</strong> holiday <strong>christmas</strong> christmas <strong>holiday</strong> is something <strong>detroit</strong>
    <strong>christmas</strong> holiday</p>
  </blockquote>
  
  <p>If I modify the regex to:</p>
  
  <pre><code>/(|&gt;|^|;|,| )?(detroit|to|christmas|holiday|test|his)(&lt;| |\.|;|,|\!|\?|\)|$)/i
  </code></pre>
  
  <p>The regex matches the following:</p>
  
  <blockquote>
    <p>Always check Agile for the la<strong>test</strong> version of applicable Service and Installation procedures! The steps contained in t<strong>his</strong> database are for Troubleshooting only, not for performing Service. T<strong>his</strong> is not a controlled document and may not be distributed <strong>to</strong> non-Stryker personnel</p>
    
    <p><strong>christmas holiday christmas christmas holiday</strong> is something <strong>detroit</strong> <strong>christmas holiday</strong></p>
  </blockquote>
  
  <p>The second version matches all the words that it should but because of the ? modifier it is also matching partials which I want to skip. How can I modify the regex so that a match of "christmas " does not steel the space from the next possible match?</p>