Perl正则表达式为英文单词

时间:2011-01-07 01:45:07

标签: regex perl words

我需要一个能找到任何看起来像英文单词的正则表达式。特别是,当字符串具有:

时,我希望表达式匹配

1)只有字母;和

2)至少两个不同的字母。 (我故意排除一个字母的单词。)

所以我正在寻找符合theabracadabra但不符合aaa的内容。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:7)

也许\b(\w*(\w)\w*(?!\2)\w+)\b适合你。它处理你给出的例子。

它匹配组中的字母\w,然后使用反向引用和否定前瞻(?!\2)查找除字母以外的内容。我们在最后匹配至少一个字符,这对于使负前瞻力至少是一个不同的字符是必要的。然后我们放置额外的\w*以允许其他字母。 \b确保匹配的结尾位于单词边界。

http://www.rubular.com/r/pwjGi9eLf5

请注意,这不是与英语单词匹配的超级正则表达式。为此,您想要与字典进行比较。但这似乎不是你想要做的。

答案 1 :(得分:4)

结帐Lingua::EN::Splitter

use strict; use warnings;
use Lingua::EN::Splitter qw(words);

my @words = words $input_text;
print @words;