如何将两个条件应用于拆分?

Bxr*_*MKH 2 perl split

我想拆分字母"b"而不从输出中删除它.如果没有后跟"c",我只想拆分"b".我如何结合这两个条件?这是我到目前为止所尝试的:

$val ="abbcdebffgbhiabbbcde";
@as = split(/(?<=b)/,"$val",) if !~/(bc)/g; 
foreach (@as){
    print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)

这是我的预期输出:

ab
bcdeb #here 'b' present but not split because succeeding 'c' is present.
ffgb
hiab
b
bcde #here 'b' present but not split because succeeding 'c' is present.
Run Code Online (Sandbox Code Playgroud)

目前,我的代码在所有"b"上分裂.如何更改它以结合这两个条件?

Tom*_*ech 7

你想要一个负面的先行断言:

use strict;
use warnings;

my $val = "abbcdebffgbhiabbbcde";
my @as = split(/(?<=b)(?!c)/, $val);

print "$_\n" foreach @as;
Run Code Online (Sandbox Code Playgroud)

只要没有后跟"c",就会在字母"b"前面的任何一点上分开.这(?!c)是一个负前瞻断言,这意味着任何后跟"c"的"b"都不匹配.

输出:

ab
bcdeb
ffgb
hiab
b
bcde
Run Code Online (Sandbox Code Playgroud)