字符应该在搜索字符串之前出现几次

时间:2014-04-29 10:48:55

标签: regex perl

说我有这部分数据:

asdsad;adafds;asfdafas;frewf;gggf
121132;sadf12;124fd;1243fd;dfgfew

...字符串分隔符为;

如何获得每行的第4部分?即。 ; ; ;[this];

这不起作用:;{3}(\w+)

我需要正则表达式,因为我想在Schartzian-transform

中使用它

2 个答案:

答案 0 :(得分:5)

只需使用split

use strict;
use warnings;

while (<DATA>) {
    chomp;
    my $fourth = (split ';', $_)[3];
    print "$fourth\n";
}

__DATA__
asdsad;adafds;asfdafas;frewf;gggf
121132;sadf12;124fd;1243fd;dfgfew

输出:

frewf
1243fd

答案 1 :(得分:3)

您可以使用以下正则表达式:

([^;]+;){3}([^;]+)

并且第二个捕获的组(\2$2)将包含您想要的内容:

例如:上面(\2 / $2)上面的问题中包含frewf1243fd

演示:http://regex101.com/r/uN5fD9