У меня есть большой набор реального текста, из которого мне нужно вытащить слова для ввода в программу проверки орфографии.Я хотел бы извлечь как можно больше значимых слов без особого шума.Я знаю, что здесь много ниндзя-регулярных выражений, так что, надеюсь, кто-нибудь мне поможет.
В настоящее время я извлекаю все алфавитные последовательности с помощью '[a-z]+'
.Это нормальное приближение, но оно тянет с собой много мусора.
В идеале Я хотел бы получить регулярное выражение (не обязательно красивое или эффективное), которое извлекает все алфавитноепоследовательности, разделенные естественными разделителями слов (например, [/-_,.: ]
и т. д.), и игнорирующие любые алфавитные последовательности с недопустимыми границами.
Однако я также был бы рад просто получить все алфавитные последовательности, которые НЕ являютсярядом с номером.Так, например, 'pie21'
НЕ будет извлекать 'pie'
, но 'http://foo.com'
будет извлекать ['http', 'foo', 'com']
.
Я пытался lookahead
и lookbehind
утверждений, но они применялись для каждого символа (так что дляпример re.findall('(?<!\d)[a-z]+(?!\d)', 'pie21')
вернул бы 'pi'
, когда я хочу, чтобы он ничего не возвращал).Я попытался обернуть альфа-часть термином ((?:[a-z]+)
), но это не помогло.
Подробнее: Данные представляют собой базу данных электронной почты, поэтому в основном это обычный английский с обычнымчисла, но иногда есть чепухи вроде GIHQ4NWL0S5SCGBDD40ZXE5IDP13TYNEA
и AC7A21C0
, которые я бы хотел полностью игнорировать.Я предполагаю, что любая алфавитная последовательность с числом в ней является мусором.