From: "Michael W. Ryder" <_mwryder@...> Date: 2007-04-21T07:55:04+09:00 Subject: Re: Finding non-printable characters using Regular Expressions Alex Young wrote: > Michael W. Ryder wrote: >> Alex Young wrote: >>> Michael W. Ryder wrote: >>>> As part of a method I am playing with while learning Ruby I need to >>>> be able to determine which characters in a string are >>>> non-printable. What is the "best" method for determining if a >>>> character is printable, such as an "A", or unprintable, such as a tab? >>>> While I could create a list of printable characters using ranges is >>>> this the best way to do this? >>>> >>> The POSIX character classes are for exactly this: >>> >>> irb(main):001:0> "A \n B \t C".gsub(/[[:graph:]]/, '') >>> => " \n \t " >>> irb(main):002:0> "A \n B \t C".gsub(/[[:print:]]/, '') >>> => "\n\t" >>> >> >> This is very close to what I am looking for. If I use >> "A \n B \t C".gsub(/[^[:graph:]]/, '') >> it returns "ABC", but I need to keep the spaces and have not been able >> to figure out how to include them in the output so that it shows "A B C". >> Thank you for your assistance, it has given me a starting point and I >> will have to spend some time experimenting and researching to reach >> the final step. > > You're nearly there. Look a little closer at my suggestion, > particularly the second regex. > Thank you very much for your assistance using "A \n B \t C".gsub(/[^[:print:]]/, '') gives me "A B C" which is what I was looking for. Can you recommend a good reference on regular expressions so I can learn more?