正则表达式查找重复字符的最后一个字符

时间:2018-07-13 01:11:39

标签: regex perl

我已经在Stack Overflow中搜索了类似的问题,但是找不到。我想要的是一个正则表达式(我正在使用Perl)来查找可能重复字符的最后一次出现。

例如a;b;c;;;d,;ee,我想调用split函数在此字符串中;的最后一个位置进行拆分,这样拆分后的结果将是{{1} }。

谢谢

This question类似,但不是我想要的。对于我的示例,我想要一个包含5个项目[a b c;; d, ee]的列表。另一个问题将给出两个项目[a b c;; d, ee]的列表。

3 个答案:

答案 0 :(得分:3)

split /;(?!;)/

(仅在;上分割,后跟;

答案 1 :(得分:0)

另一种方法,可以绕过序列的最后一个分号以外的所有内容

use strict;
use warnings 'all';

my @vals = split /;*\K;/, 'a;b;c;;;d,;ee';

use Data::Dumper;
print Dumper \@vals;

输出

$VAR1 = [
          'a',
          'b',
          'c;;',
          'd,',
          'ee'
        ];

答案 2 :(得分:-2)

使用捕获组。

my ( $first, $last ) = $string =~ /(.*);([^;]*)$/;