首先,对不起我的英文和标题中令人困惑的描述。
我的问题是我有多行自然短语,我想计算其中包含的单词。我在Perl中提出了以下正则表达式:
my @words = split /[ :,.;\s\/\t!"\n]+/, $_;
它工作正常,但是当遇到像'U.S.A'这样的单词时,它会将单词分成U,S和A,这是不受欢迎的。我该怎么办才能修复它?感谢。
答案 0 :(得分: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"]