想要看看是否有人可以提供帮助,我有一个跟随字符串
"Definitions, Exemptions and Rebates where
|E|. This is a sample string"
我希望正则表达式在任何| E |出现之前替换任何空格,包括额外空格和换行符,其中“E”可以是包围的任意数量的字母。和|。
我正在考虑一些事情
$s =~ s/\s*</ </ig;
但是这里只会看到开头的|不是结束“|”。
最终结果应如下所示
“定义,豁免和折扣,其中| E |。这是一个示例字符串”
答案 0 :(得分:4)
您可以使用正面展示(?= ..)
来匹配\s+
之前应该匹配的内容。
$s =~ s/\s+(?= \|\w+\|)/ /xig;
答案 1 :(得分:4)
如何区分起始管道和终端管道?
假设有人不能,那么以下内容可能有所帮助:
use strict;
use warnings;
my $data = do {local $/; <DATA>};
$data =~ s{\s+(?=\|)}{ }g;
print $data;
__DATA__
Definitions, Exemptions and Rebates where
|E|. This is a sample string
输出:
Definitions, Exemptions and Rebates where |E|. This is a sample string