По-перше, вибачте за мою англійську та заплутане опис у заголовку.
Моя проблема полягає в тому, що у мене є кілька рядків природних фраз, я хочу розрахувати слова, що містяться в ній. Я придумав наступний регулярний вираз в Perl:
my @words = split /[ :,.;s/t!"n]+/, $_;
Він чудово працює, за винятком того, що, зустрічаючись з таким словом, як "U.S.A", він розбиває слово на U, S і A, що небажано. Що я можу зробити, щоб виправити це? Дякую.
Відповіді:
1 для відповіді № 1Я розділений на основі пробілів, але потім видаляю всі символи, що не містять слова, від початку та кінця "слів". Таким чином U.S.A.
буде в кінцевому підсумку як U.S.A
use strict;
use warnings;
local $_ = "hello world, U.S.A., and other places.";
my @words = map { s/^W+|W+$//g; $_ } split /s+/, $_;
use Data::Dump;
dd @words;
Виходи
["hello", "world", "U.S.A", "and", "other", "places"]