Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re: Regex to add space after punctuation sign

by Abigail-II (Bishop)
on Jan 08, 2004 at 09:20 UTC ( #319758=note: print w/replies, xml ) Need Help??

in reply to Regex to add space after punctuation sign

Previous solutions only considered commas and periods, not other punctuation symbols. Assuming anything that's not a word character or whitespace is to be considered punctuation, I would use:
s/(\d[,.]\d)|([^\w\s](?!\s))/$1 || "$2 "/ge;


Replies are listed 'Best First'.
Re: Re: Regex to add space after punctuation sign
by dda (Friar) on Jan 08, 2004 at 09:52 UTC
    Thank you, Abigail. Can you please explain how does the replacement part of your expression work? If I understand correctly, /e evaluates $1 || "$2 " -- that way if $1 is not empty, it should not add second part?


    P.S. I added end-of-line processings as was suggested by aragorn:
    s/(\d[,.]\d)|([^\w\s](?!\s)(?!$))/$1 || "$2 "/ge;
      Evaluating $1 || "$2 " means you get $1 if $1 is true (which means, anytime \d[.,]\d matches), otherwise you get $2 (the punctation character), followed by a space.

      I would handle end-of-line processing as follows:

      s/(\d[,.]\d)|([^\w\s])(?=\S)/$1 || "$2 "/ge;
      A single positive look-ahead is, IMO, more clear than two negative look-aheads.


        Thank you. You are the best!


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://319758]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (9)
As of 2016-10-27 06:17 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (353 votes). Check out past polls.