我有一大批真实世界的文本需要从中提取单词并输入到拼写检查器。我希望能够提取尽可能多的有意义的单词而不会有太多噪音。目前我正在使用 '[a-z]+' 提取所有字母序列。这是一个可以接受的近似值,但它还是会带来很多垃圾内容。
理想情况下,我希望有一个正则表达式(不必漂亮或高效),它可以提取所有由自然单词分隔符(如 [/-_,.: ] 等)分隔的英文字母序列,并忽略任何带有非法边界的英文字母序列。
然而,我也很乐意只能获得所有不与数字相邻的英文字母序列。因此,例如 'pie21' 不会提取 'pie',但 'http://foo.com' 将提取 ['http'、'foo'、'com']。
我尝试过 lookahead 和 lookbehind 断言,但它们是按字符应用的(所以例如 re.findall('(?更详细地说:数据是邮件数据库,所以它主要是普通英语和正常数字,但偶尔会有像 GIHQ4NWL0S5SCGBDD40ZXE5IDP13TYNEA 和 AC7A21C0 这样的垃圾字符串,我想完全忽略它们。我假设任何包含数字的英文字母序列都是垃圾内容。
理想情况下,我希望有一个正则表达式(不必漂亮或高效),它可以提取所有由自然单词分隔符(如 [/-_,.: ] 等)分隔的英文字母序列,并忽略任何带有非法边界的英文字母序列。
然而,我也很乐意只能获得所有不与数字相邻的英文字母序列。因此,例如 'pie21' 不会提取 'pie',但 'http://foo.com' 将提取 ['http'、'foo'、'com']。
我尝试过 lookahead 和 lookbehind 断言,但它们是按字符应用的(所以例如 re.findall('(?更详细地说:数据是邮件数据库,所以它主要是普通英语和正常数字,但偶尔会有像 GIHQ4NWL0S5SCGBDD40ZXE5IDP13TYNEA 和 AC7A21C0 这样的垃圾字符串,我想完全忽略它们。我假设任何包含数字的英文字母序列都是垃圾内容。
\d
可以工作,但其他转义序列会出错,而且这可能很难调试。 - Tim Pietzcker