Perl Regex:合并多个单字符子串

时间:2015-06-08 17:46:20

标签: regex string perl

我有一个字符串,如果其中有两个或更多单字符单元,我想合并它们(“J R EWING” - >“JR EWING”)

我正在使用它:

$temp =~ s/\b(\w) (\w)\b/$1$2/g;

但“E T A HOFFMANN”当然失败了。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

s{\b((?:\w )+\w)\b}{ ( $1 =~ s/ //gr }eg;   # 5.14+

s{\b((?:\w )+\w)\b}{ ( my $s = $1 ) =~ s/ //g; $s }eg;

在这种特殊情况下,您可以使用前瞻。

s/\b\w\K (?=\w\b)//g;   # 5.10+

s/(?<=\b\w) (?=\w\b)//g;

答案 1 :(得分:2)

您可以使用前瞻,这样第二个字母不是匹配的一部分,正则表达式引擎可以继续工作:

$temp =~ s/\b\w\K (?=\w\b)//g;

\K会丢弃整场比赛左边的所有内容。