perl使用正则表达式拆分字符串,但将分隔符连接到输出

San*_*kar 1 string perl split

我有一个字符串:

za b c
   x y
   x z
ya b c
   x y
   x z
Run Code Online (Sandbox Code Playgroud)

现在,如果我分裂为:

my @lines = split /\n([a-z])/, $input;
my @sorted_lines = sort @lines;
Run Code Online (Sandbox Code Playgroud)

输入行分为三部分:

za b c
   x y
   x z

y

a b c
  x y
  x z
Run Code Online (Sandbox Code Playgroud)

有没有办法根据换行符+某些字符进行拆分,但是将该字符保留到下一个标记?我的意思是我希望输出只有两个标记:1)za ...和2)ya ....

ste*_*enl 6

让正则表达式向前看而不用捕获(?=...):

my @lines = split /\n(?=[a-z])/, $input;
Run Code Online (Sandbox Code Playgroud)