Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | "Beecroft, Erik (VDSS)" <erik.beecroft@dss.virginia.gov> |
To | <statalist@hsphsun2.harvard.edu> |
Subject | st: Using regex to identify strings with capital letters |
Date | Thu, 27 May 2010 08:25:31 -0400 |
Thank you to Martin and Nick for solving my problem, Martin with the regexm function and Nick with inrange. Both of these work with my data: keep if regexm(substr(var1,1,2) , "^([A-Z][A-Z])") keep if inrange(substr(var1,1,1), "A", "Z") & inrange(substr(var1,2,1), "A","Z") Both also keep records that begin with "PO" for Post Office box. These records I don't want, but easily dropped by modifying Martin's suggestion: drop if regexm(substr(var1,1,2) , "^([P][O])") Thank you for your help. Erik Martin is correct that -inrange("Er", "AA", "ZZ")- is true. Possibly this is Erik's specific problem, namely that having the first capital letter in "A" ... "Z" is necessary but not sufficient. I offer as a stronger criterion inrange(substr(myvar,1,1), "A", "Z") & inrange(substr(myvar,2,1), "A", "Z") I continue to like regex solutions when they are the simplest available! Nick n.j.cox@durham.ac.uk * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/