gpt4 book ai didi

regex - 去除单个字母之间的空格

转载 作者:行者123 更新时间:2023-12-04 14:32:30 27 4
gpt4 key购买 nike

我有一个字符串,它可能包含任意数量的由空格分隔的单字母。我正在寻找一个正则表达式(在 Perl 中),它将删除所有(未知数量)单个字母之间的空格。

例如:
ab c d应该变成ab cda bcd e f gh应该变成a bcd ef gha b c应该变成abc

abc d应该保持不变(因为没有单个字母后跟或前面有单个空格)。

感谢您的任何想法。

最佳答案

您的描述与您的示例不符。在我看来,您想删除以下任何空格:(1) 前面不是一个字母,并且 (2) 后面是一个本身不是字母的字母。这些条件可以精确地表示为嵌套的环视:

/(?<=(?<!\pL)\pL) (?=\pL(?!\pL))/

测试:
use strict;
use warnings;

use Test::Simple tests => 4;

sub clean {
(my $x = shift) =~ s/(?<=(?<!\pL)\pL) (?=\pL(?!\pL))//g;
$x;
}

ok(clean('ab c d') eq 'ab cd');
ok(clean('a bcd e f gh') eq 'a bcd ef gh');
ok(clean('a b c') eq 'abc');
ok(clean('ab c d') eq 'ab cd');

输出:
1..4
ok 1
ok 2
ok 3
ok 4

我假设你的意思是一个空格字符 (U+0020);如果你想匹配任何空格,你可能想用 \s+ 替换空格。 .

关于regex - 去除单个字母之间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4228750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com