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