For some reason the ([^ ]+) section stops at the forward slash, even though it's clearly not a space.
Actually, it's not stopping at the forward slash. The regex tries to match as much as possible, so it does match up to the space. However, that causes the rest of the regex to fail, so the regex engine keeps backtracking and retrying the regex. In this case, backtracking to the / allows the regex to match.

What happened was, you forgot a quantifier. Try the following regex (cleaned up):

$data =~ /[^\d]+([^ ]+)[^\d]+(\d+)(.*?)$/;
Here's the cleaned up version of the regex:
$data =~ /\D+(\S+)\D+(\d+)(.*)$/;
You'll notice that the [^\d] between the first and second set of parens now has a + after it.

Breaking out the regex for those who prefer it:

$data =~ / \D+ # One or more non-digits ( # Capture to $1 \S+ # non-spaces ) \D+ # One or more non-digits ( # Capture to $2 \d+ # one or more digits ) ( # Capture to $3 .* # rest of string )$ # Anchor above to end of string /x;

Cheers,
Ovid

Update: Darn it! Guildenstern beat me to it!

Join the Perlmonks Setiathome Group or just go the the link and check out our stats.


In reply to (Ovid) Re: Matching (non)spaces in regex? by Ovid
in thread Matching (non)spaces in regex? by Guildenstern

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.