【问题标题】:how to split a string into arrays using perl?如何使用 perl 将字符串拆分为数组?
【发布时间】:2018-12-03 15:36:24
【问题描述】:

有一个字符串为:

$string= 123456-9876;

需要将其拆分成数组如下:

$string = [12,34,56,98,76]

试图将其拆分为 split('-',$string) 没有达到目的。 我怎么能在 perl 中做到这一点?

【问题讨论】:

  • 是否要将其拆分为 2 位子字符串?
  • 不拆分,匹配你想保留的:$string = [ $string =~ /(\d\d)/g ]
  • 这个怎么样? ([^-].)
  • 分割规则是什么?

标签: arrays regex perl


【解决方案1】:

提取数字对:(例如"1234-5678" ⇒ [12,34,56,78])

$string = [ $string =~ /\d\d/g ];

提取数字对,即使由非数字分隔:(例如 "1234-567-8" ⇒ [12,34,56,78])

$string = [ $string =~ s/\D//rg =~ /../sg ];

【讨论】:

    【解决方案2】:

    您可以使用此 perl 代码捕获所有 2 位数字,而不是拆分,

    $str =  "123456-9876";
    my @matches = $str =~ /\d{2}/g;
    
    print "@matches\n";
    

    打印,

    12 34 56 98 76
    

    另一种解决方案,只对两个数字进行分组,无论字符串中是否存在非数字,而不改变原始字符串

    $string =  "1dd23-dsd--456-9-876";
    while($string =~ /(\d).*?(\d)/g) {
            print "$1$2 ";
    }
    

    打印,

    12 34 56 98 76
    

    【讨论】:

      猜你喜欢
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2015-07-18
      • 1970-01-01
      • 2011-08-28
      • 2016-04-01
      相关资源
      最近更新 更多