正则表达式在冒号(:)之间拆分字符串

时间:2016-07-22 10:23:24

标签: regex perl

我有一个像<str1:str2:str3:str4:str5:;

这样的字符串

我想将这些字符串分组为1美元,2美元,3美元,4美元,5美元。在这个输入中,字符串可能会来或者不会来。如果没有任何字符串,那么我们必须为一个组取空。然后最后,我们可能会收到一个以上的专栏。

我试过下面的代码。请输入任何内容

<filter regexp='s/^\s*&lt;([\s\-A-Z_0-9,]*):?([\s\-A-Z_0-9,]*):?([\s\-A-Z_0-9,]*):?([\s\-A-Z_0-9,]*):?([\s\-A-Z_0-9,]*):?([\s\-A-Z_0-9,]*):*;.*$/keep_it_method_name $1 aid $2 ctag $3 General_block $4 Data_block $5/'/>

1 个答案:

答案 0 :(得分:1)

假设字符串中总共有五个冒号,我建议你做这样的事情

use strict;
use warnings 'all';
use feature 'say';

my $s = '<str1:str2:str3:str4:str5:;';

my $re = '([^<>:;]*):' x 5;
$re = qr/<$re;/;

if ( $s =~ $re ) {
    no strict 'refs';
    say ${$_} for 1 .. 5;
}

输出

str1
str2
str3
str4
str5