http://qs321.pair.com?node_id=726743


in reply to One regex construct to handle multiple string types

One (of many) solutions would be to anchor your regex to the end of the string:
/(.{2})$/

CountZero

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

Replies are listed 'Best First'.
Re^2: One regex construct to handle multiple string types
by JadeNB (Chaplain) on Nov 30, 2008 at 18:34 UTC
    I think the poster didn't want so much the final two characters (which could be got by substr($_, -2) anyway) as non-space characters after a period. Of course, your regex could easily be adapted to /\.(\S+)$/; but I think the sexeger /^(\S+)\./ should be quicker on some inputs (in the sense that it doesn't have to back-track on pathological strings like '............... .a').

    UPDATE: My sexeger can behave badly on strings with multiple periods in them. Two natural changes are to make the \S+ match non-greedy, or to change \S to [^.]. These have different matching behaviour, especially on strings with characters that are neither spaces nor 'word' characters, and on strings with multiple periods; but one of them might do what the poster wants.
    Also, I changed the sample string to one that actually matches.

    UPDATE 2: Oops, on re-reading, the poster explicitly wants to allow strings without any periods at all. Never mind.