如何在字符串被该字符拆分时忽略拆分模式

时间:2014-03-05 02:54:24

标签: regex perl

首先,对不起我的英文和标题中令人困惑的描述。

我的问题是我有多行自然短语,我想计算其中包含的单词。我在Perl中提出了以下正则表达式:

my @words = split /[ :,.;\s\/\t!"\n]+/, $_;

它工作正常,但是当遇到像'U.S.A'这样的单词时,它会将单词分成U,S和A,这是不受欢迎的。我该怎么办才能修复它?感谢。

1 个答案:

答案 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"]