1
我有一个字符串,如果它有两个或多个单字符单元,我想合并它们(“JR EWING” - >“JR EWING”)Perl正则表达式:合并多个单字符子串
我使用这个:
$temp =~ s/\b(\w) (\w)\b/$1$2/g;
但它当然失败了“霍夫曼”。有什么想法吗?
我有一个字符串,如果它有两个或多个单字符单元,我想合并它们(“JR EWING” - >“JR EWING”)Perl正则表达式:合并多个单字符子串
我使用这个:
$temp =~ s/\b(\w) (\w)\b/$1$2/g;
但它当然失败了“霍夫曼”。有什么想法吗?
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;
您可以使用一个前瞻,这样第二个字母是不匹配和正则表达式引擎的一部分可以继续工作:
$temp =~ s/\b\w\K (?=\w\b)//g;
\K
放弃所有从左边整场比赛。
Jinx!我同时在你的贴子上添加了我的答案! – ikegami