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