Вы можете попробовать это.Это находит 'B' в любой группе 4.
Версия Perl:
^(?:(?=.{0,3}(B))?....)(?:(?=.{0,3}(B))?....)(?:(?=.{0,3}(B))?....)$
Версия PCRE:
^(?:(?:(?=.{0,3}(B)))?....)(?:(?:(?=.{0,3}(B)))?....)(?:(?:(?=.{0,3}(B)))?....)$
https://regex101.com/r/yV72s2/1
Объяснено
^
(?:
(?=
.{0,3}
( B ) # (1), B in first group of 4
)?
. . . .
)
(?:
(?=
.{0,3}
( B ) # (2), B in second group of 4
)?
. . . .
)
(?:
(?=
.{0,3}
( B ) # (3), B in third group of 4
)?
. . . .
)
$
Если вы просто хотите узнать, соответствует ли буква 'B' в первой или последней 4, это будет
(?:^(?=.{12}$)(?:(?=.{0,3}?(B))....)|(?<=^.{8})(?:(?=.{0,3}?(B))....)$)
https://regex101.com/r/wEdTCU/1
Объяснено
(?:
^
(?= .{12} $ )
(?:
(?=
.{0,3}?
( B ) # (1), B in first group of 4
)
. . . .
)
|
(?<= ^ .{8} )
(?:
(?=
.{0,3}?
( B ) # (2), B in third group of 4
)
. . . .
)
$
)