Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

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 all is quiet...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2018-01-22 01:32 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (230 votes). Check out past polls.