in reply to Repeating a capture group pattern within a pattern

You're over thinking it.
my $x = "0.01 NaN 2.30 4.44";
Match the form rather than the content of the data:
my $r1 = qr/(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/;
Or ditch the pattern and split, as others suggest:
my ($d, $e, $f, $g) = split /\s+/, $x;
  • Comment on Re: Repeating a capture group pattern within a pattern