我有一大組真實世界的文本,我需要將單詞輸出到拼寫檢查器中。我想提取儘可能多的有意義的單詞儘可能沒有太多的噪音。我知道這裏有很多正則表達式的忍者,所以希望有人能幫助我。提取整個單詞
目前我用'[a-z]+'
提取所有的字母順序。這是一個好的近似值,但它拖拽了很多垃圾。
理想我想一些正則表達式(並不一定是相當的或有效的)提取的天然單詞分隔符(如[/-_,.: ]
等)分隔的所有字母序列,而忽略與非法界限的任何字母序列。
但是我也很高興能夠得到所有不與數字相鄰的字母序列。因此,例如'pie21'
將不提取'pie'
,但'http://foo.com'
將提取['http', 'foo', 'com']
。
我試圖lookahead
和lookbehind
斷言,但他們採用每個字符(因此,例如,re.findall('(?<!\d)[a-z]+(?!\d)', 'pie21')
將返回'pi'
時,我想這回沒有)。我嘗試將alpha部分作爲術語來包裝((?:[a-z]+)
),但它沒有幫助。
更多細節:的數據是電子郵件數據庫,所以它主要是簡單的英語與正常的數字,但偶爾也有像GIHQ4NWL0S5SCGBDD40ZXE5IDP13TYNEA
和AC7A21C0
垃圾串,我想完全忽略。我假設任何按字母順序排列的數字都是垃圾。
更好地使用原始字符串和正則表達式。 '\ d'碰巧工作,但其他轉義序列將失敗,這可能很難調試。 – 2011-04-19 14:30:34