perl中的正则表达式匹配和组

时间:2014-08-27 18:23:34

标签: regex perl

想要看看是否有人可以提供帮助,我有一个跟随字符串

"Definitions, Exemptions and Rebates where  


|E|. This is a sample string"

我希望正则表达式在任何| E |出现之前替换任何空格,包括额外空格和换行符,其中“E”可以是包围的任意数量的字母。和|。

我正在考虑一些事情

   $s =~ s/\s*</ </ig; 

但是这里只会看到开头的|不是结束“|”。

最终结果应如下所示

“定义,豁免和折扣,其中| E |。这是一个示例字符串”

2 个答案:

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