我需要一个正则表达式,它可以找到任何看起来像英语单词的东西。特别是,我希望表达式在字符串具有以下内容时匹配:
1) 只有字母;和
2) 至少两个不同的字母。(我故意排除一个字母的单词。)
所以我正在寻找可以匹配但不匹配the
的东西。abracadabra
aaa
任何帮助深表感谢。
也许\b(\w*(\w)\w*(?!\2)\w+)\b
对你有用。它处理你给出的例子。
它匹配\w
组中的一个字母,然后使用反向引用和否定前瞻查找除字母以外的其他内容(?!\2)
。我们在最后匹配至少一个字符,这对于使负前瞻强制至少一个不同的字符是必要的。然后我们\w*
在周围放置额外的 's 以允许额外的字母。\b
确保匹配的结尾在单词边界处。
http://www.rubular.com/r/pwjGi9eLf5
请注意,这不是匹配纯英语单词的超级骗子正则表达式。为此,您想与字典进行比较。但这似乎不是您要在这里做的事情。
use strict; use warnings;
use Lingua::EN::Splitter qw(words);
my @words = words $input_text;
print @words;