【问题标题】:regex match and group in perlperl中的正则表达式匹配和分组
【发布时间】:2014-08-27 18:23:34
【问题描述】:

想看看有没有人可以帮忙,我有以下字符串

"Definitions, Exemptions and Rebates where  


|E|. This is a sample string"

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

我正在考虑一些事情

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

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

最终结果应该如下所示

“|E| 中的定义、豁免和回扣。这是一个示例字符串”

【问题讨论】:

    标签: regex perl


    【解决方案1】:

    您可以使用正向向前看(?= ..) 来匹配应该在\s+ 之前的内容以匹配它。

    $s =~ s/\s+(?= \|\w+\|)/ /xig; 
    

    【讨论】:

      【解决方案2】:

      如何区分起始管道和结束管道?

      假设一个人不能,那么以下可能会有所帮助:

      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
      

      【讨论】:

        猜你喜欢
        • 2010-10-01
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 2014-07-20
        • 1970-01-01
        • 2010-09-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多