title: Match a word but not its inverse using [^] syntax
body: <p>I am trying to make a regex that <em>doesn't</em> match one word, but <em>does</em> match its reverse. For example, if the word I don't want to match is "no":</p>
  
  <pre><code>I am matching this word   // will pass
  I am matching no word     // will not pass
  I am matching on word     // will pass
  I am matching that word   // will pass
  </code></pre>
  
  <p>The current regex I am using doesn't pass on the third example, because it is not matching any word with "n" or "o" in it:</p>
  
  <pre><code>^I am matching ([^no]*) word$
  </code></pre>
  
  <p>What is the best way to achieve this - ie, match on a word, not a collection of characters?</p>
  
  <p>For context I am writing acceptance tests using Scala and Cucumber, which use Regex to match a feature file up with its corresponding stepdef. My real-world example is more complex, so I have simplified it here. Also, I know that I can just catch <code>(.*)</code> and handle what is in that capture group using a <code>case</code>/<code>match</code> block in Scala, but I am curious about how to do this with purely Regex.</p>