应该很简单,但这个正则表达式不起作用(Perl):
^(.*?)-(.*?)(-(.*)|$)
a - b - c(我希望$ 1 = a,$ 2 = b,$ 3 = c)
a - b(我希望$ 1 = a,$ 2 = b)
ABC
欢迎任何想法
你可以在这里试试:
https://regex101.com/r/kP0fN9/2
答案 0 :(得分:2)
好像你想要这样的东西,
^[^-]*-(?:[^-]*-)?[^-]*$
OR
^[^-\n]*-(?:[^-\n]*-)?[^-\n]*$
更新
^(.*?)\s*-\s*(.*?)\s*(?:-\s*(.*)|$)
答案 1 :(得分:1)
怎么样:
use strict;
use warnings;
use Data::Dump qw(dump);
while(<DATA>) {
chomp;
my @res = $_ =~ /([^-]+)/g;
dump@res;
}
__DATA__
a - b - c
a - b
<强>输出:强>
("a ", " b ", " c")
("a ", " b")