3

我需要一个正则表达式,它可以找到任何看起来像英语单词的东西。特别是,我希望表达式在字符串具有以下内容时匹配:

1) 只有字母;和

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

所以我正在寻找可以匹配但不匹配the的东西。abracadabraaaa

任何帮助深表感谢。

4

2 回答 2

7

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

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

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

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

于 2011-01-07T01:53:57.237 回答
4

查看Lingua::EN::Splitter

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

my @words = words $input_text;
print @words;
于 2011-01-07T02:07:20.030 回答