Perl регулярное выражение для английского слова - PullRequest
3 голосов
/ 07 января 2011

Мне нужно регулярное выражение, которое найдет все, что похоже на английское слово.В частности, я хочу, чтобы выражение совпадало, когда строка имеет:

1) только буквы;и

2) как минимум две разные буквы.(Я намеренно исключаю однобуквенные слова.)

Поэтому я ищу что-то, что соответствовало бы the и abracadabra, но не aaa.

Любая помощь оченьоценили.

Ответы [ 2 ]

7 голосов
/ 07 января 2011

Возможно, \b(\w*(\w)\w*(?!\2)\w+)\b работает для вас. Он обрабатывает примеры, которые вы приводите.

Он соответствует букве \w в группе, затем ищет что-то, кроме буквы, используя обратные ссылки и отрицательный взгляд (?!\2). В конце мы сопоставляем хотя бы один символ, что необходимо для того, чтобы заставить отрицательную прогнозирующую силу хотя бы один отдельный символ. Затем мы помещаем дополнительные \w* вокруг, чтобы разрешить дополнительные буквы. \b гарантирует, что концы совпадений находятся на границах слов.

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

Обратите внимание, что это не супер-пупер регулярное выражение, которое соответствует только английским словам. Для этого вы хотите сравнить со словарем. Но это, похоже, не то, что вы собираетесь здесь делать.

4 голосов
/ 07 января 2011

Выезд Lingua :: EN :: Splitter :

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

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