/ / Як ігнорувати розбитий шаблон, тоді як рядок потрібно розділити на цей символ - regex, perl

Як ігнорувати розбитий шаблон, тоді як рядок повинен бути розділений цим символом - regex, perl

По-перше, вибачте за мою англійську та заплутане опис у заголовку.

Моя проблема полягає в тому, що у мене є кілька рядків природних фраз, я хочу розрахувати слова, що містяться в ній. Я придумав наступний регулярний вираз в 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"]