title: Regex re negative lookahead doesn't exclude multiple characters successfully
body: <p>There are 5 examples as below, and I am trying to find 3,4,5 while excluding 1,2.</p>
  
  <ol>
  <li>ABC-abc</li>
  <li>abc-ABC</li>
  <li>ABC-ABC</li>
  <li>ABC</li>
  <li>vABC-ABC-ABCv</li>
  </ol>
  
  <p>The current expression I use is:</p>
  
  <pre><code>(?!(\w*[A-Z]{2,}-[a-z]+\w*|\w*[a-z]+-[A-Z]{2,}\w*))(\w*-?[A-Z]{2,}-?\w*)
  </code></pre>
  
  <ul>
  <li>I utilize (\w*-?[A-Z]{2,}-?\w*) to get all possibility of all examples first.</li>
  <li>I then use (?!...|...) to put two exclusion conditions.</li>
  <li>The first exclusion condition is \w*[A-Z]{2,}-[a-z]+\w* and the second is \w*[a-z]+-[A-Z]{2,}\w*.</li>
  <li>This expression works to exclude 1.ABC-abc but not abc-ABC.</li>
  </ul>
  
  <p>I searched a lot and found some people say this way is not something regex is "good" at. Is there any solution or improvement I can do to get rid of abc-ABC.</p>
  
  <p>Appreciate any help or opinion.</p>