title: Extracting whole words
body: <p>I have a large set of real-world text that I need to pull words out of to input into a spell checker. I'd like to extract as many <em>meaningful</em> words as possible without too much noise. I know there's plenty of regex ninjas around here, so hopefully someone can help me out.</p>
  
  <p>Currently I'm extracting all alphabetical sequences with <code>'[a-z]+'</code>. This is an okay approximation, but it drags a lot of rubbish out with it.</p>
  
  <p><strong>Ideally</strong> I would like some regex (doesn't have to be pretty or efficient) that extracts all alphabetical sequences delimited by natural word separators (such as <code>[/-_,.: ]</code> etc.), and ignores any alphabetical sequences with illegal bounds.</p>
  
  <p>However I'd also be happy to just be able to get all alphabetical sequences that ARE NOT adjacent to a number. So for instance <code>'pie21'</code> would NOT extract <code>'pie'</code>, but <code>'http://foo.com'</code> would extract <code>['http', 'foo', 'com']</code>.</p>
  
  <p>I tried <code>lookahead</code> and <code>lookbehind</code> assertions, but they were applied per-character (so for example <code>re.findall('(?&lt;!\d)[a-z]+(?!\d)', 'pie21')</code> would return <code>'pi'</code> when I want it to return nothing). I tried wrapping the alpha part as a term (<code>(?:[a-z]+)</code>) but it didn't help.</p>
  
  <p><strong>More detail:</strong> The data is an email database, so it's mostly plain English with normal numbers, but occasionally there's rubbish strings like <code>GIHQ4NWL0S5SCGBDD40ZXE5IDP13TYNEA</code> and <code>AC7A21C0</code> that I'd like to ignore completely. I'm assuming any alphabetical sequence with a number in it is rubbish.</p>