Условное расщепление в Perl - PullRequest
4 голосов
/ 14 ноября 2011

У меня есть следующие предложения:

my $sent = 'D. discoideum and D. purpureum developmental programs revealed';

Есть ли способ разделить строки так, чтобы два последовательных слова имели «.»(точка) между ними будет рассматриваться как одно слово?

Следовательно, мы надеемся получить это после разбиения:

$VAR = ['D. discoideum', 
         'and', 
         'D. purpureum',
         'developmental',
         'programs',  
         'revealed'];

Стандарт s/\s+//g будет разбивать все на основе пробела.

Ответы [ 2 ]

9 голосов
/ 14 ноября 2011

Попробуйте разделить на:

/(?<!\.)\s+/

Это выражение соответствует любому пробелу, который не следует за точкой, без сопоставления с самим периодом.

2 голосов
/ 14 ноября 2011

Без разбиения с использованием регулярного выражения:

my @words = $sent =~ /(\S+\.\s+\S+|\S+)/g;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...