title: How to find words in a string containing at least one underscore and capital letters
body: <p>I would like to match all the words in a string containing </p>
  
  <ol>
  <li>at least one underscore (but the word cannot neither start nor end with it) </li>
  <li>at least two uppercase letters</li>
  <li>all the letters must be uppercase.</li>
  </ol>
  
  <p>For example (and that is best result I got):</p>
  
  <pre><code>test_string = "test_string TEST_STRING TEST_string _TEST_STRING_ TESTSTRING ANOTHER_TEST_STRING"
  p = re.compile("(\S*[A-Z_]\S*[_]\S*)") 
  p.search(test_string)
  </code></pre>
  
  <p>The words I would like to obtain from the search method are:</p>
  
  <ol>
  <li>TEST_STRING (the second word, not the substring of _TEST_STRING_)</li>
  <li>ANOTHER_TEST_STRING</li>
  </ol>
  
  <p>But I am obtaining </p>
  
  <ol>
  <li>TEST_STRING</li>
  <li>TEST_STRING (which is the substring of _TEST_STRING_).</li>
  </ol>
  
  <p>Thank you</p>