From: John Joyce Date: 2007-04-21T09:16:01+09:00 Subject: Re: Finding non-printable characters using Regular Expressions THE book on RegEx is "Mastering Regular Expressions" from OReilly. It is a bit Perl focused in the examples, but the book itself is all about regular expressions in use. On Apr 21, 2007, at 7:55 AM, Michael W. Ryder wrote: > 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? >