title: Why is this regular expression not excluding the line when there are numbers at the end of a line in this string
body: <p>I am trying to scan documents and identify where sections of the document begin and end.  Sometimes, the document has a table of contents that lists page numbers I do not want to capture the TOC because it does not identify part of the document.  I have been messing with this for sometime and am stuck on something.  I can't seem to avoid capturing the lines from the table of contents with line numbers</p>
  
  <p>Here is the regular expression</p>
  
  <pre><code>verbose_item_pattern_3 = re.compile(r"""
    ^            # begin match at newline
    \t*          # 0-or-more tabspace
    [ ]*         # 0-or-more blank space
    I            # a capital I
    [tT][eE][mM] # one character from each of the three sets this allows for unknown case
    \t*          # 0-or-more tabspace
    [ ]*         # 0-or-more blankspace
    \d{1,2}      # 1-or-2 digits
    [.]?         # 0-or-1 literal .
    \(?          # 0-or-1 literal open paren
    [a-e]?       # 0-or-1 letter in the range a-e
    \)?          # 0-or-1 closing paren
    .*           # any number of unknown characters so we can have words and punctuation
    [^0-9]       # anything but [0-9]
    $           # 1 newline character
    """, re.VERBOSE|re.MULTILINE)
  </code></pre>
  
  <p>here is an example of a line I DO NOT want to capture</p>
  
  <pre><code>test_string='\nItem 6.       TITLE ITEM 6..................................................25\n'
  </code></pre>
  
  <p>Here is an example of what I do want to capture </p>
  
  <pre><code>test_string='\nItem 6.       TITLE ITEM 6 maybe other words here who knows  \n'
  </code></pre>
  
  <p>But when I run</p>
  
  <pre><code>re.findall(verbose_item_pattern_3,test_string)
  </code></pre>
  
  <p>the result is</p>
  
  <pre><code>['Item 6.       TITLE ITEM 6..................................................25\n']
  </code></pre>
  
  <p>Now the thing to me that is interesting is that if my test string is this</p>
  
  <pre><code>test_string='PART I\nItem 1.       TITLE ITEM 1...................................................1\nItem 2.       TITLE ITEM 2..................................................21\n'
  </code></pre>
  
  <p>and run that with
      re.findall(verbose_item_pattern_3,test_string)</p>
  
  <p>the result is closer to what I want but still not correct</p>
  
  <pre><code>['Item 2.       TITLE ITEM 2..................................................21\n']
  </code></pre>
  
  <p>There should not be anything captured</p>