英語の単語に似たものを見つける正規表現が必要です。特に、文字列に次のような場合に式を一致させたいと思います。
1)文字のみ。と
2)少なくとも2つの異なる文字。(私は意図的に1文字の単語を除外しています。)
だから私は一致するが一致the
しabracadabra
ないものを探していaaa
ます。
どんな助けでも大歓迎です。
おそらく\b(\w*(\w)\w*(?!\2)\w+)\b
あなたのために働く。それはあなたが与える例を扱います。
グループ内の文字と一致し、\w
後方参照と負の先読みを使用して文字以外のものを探します(?!\2)
。最後に少なくとも1つの文字を一致させます。これは、負の先読み力を少なくとも1つの別個の文字にするために必要です。次に\w*
、追加の文字を許可するために追加のを配置します。\b
一致の終わりが単語の境界にあることを保証します。
http://www.rubular.com/r/pwjGi9eLf5
これは、英語のみの単語に一致する超正規表現ではないことに注意してください。そのためには、辞書と比較したいと思います。しかし、それはあなたがここでやろうとしていることではないようです。
Lingua :: EN :: Splitterをチェックしてください:
use strict; use warnings;
use Lingua::EN::Splitter qw(words);
my @words = words $input_text;
print @words;