views:

226

answers:

4

I am trying to replace a two letter state abbreviation with text then the abbreviation. Eventually I want to find and replace the rest. How do I capture the value found? .... I tried \1 and {1}

AL  32.2679134368897 -86.5251510620117
AR  35.2315113544464 -92.2926173210144
AZ  33.3440766538127 -111.955985217148
CO  39.7098631425337 -104.899092934348

if( usState == "AZ") dpos= "33.4736704187888" + " " + "-112.043138087587";
if( usState == "CA") dpos= "36.0783581515733" + " " + " -119.868895584259";
if( usState == "CO") dpos= "39.8950788035537" + " " + " -104.831521872318";
if( usState == "CT") dpos= "41.6001570945562" + " " + " -72.6606015937273";

Update $1 does not work.

I am finding: [A-Z][A-Z] replacing with: if( usState == "$1

A: 

My regex matcher matches $1. Try that.

Stefan Kendall
A: 

Enclose the [A-Z][A-Z] within parentheses, which captures it; then, use \1 in your replacement string to refer to the capture.

A: 

I might not have understood your problem, but why don't you record a temporary macro to do the transformation?

Ali Shafai
+5  A: 

Oddly enough, Visual Studio Regular Expressions are different than normal .Net regular expressions. They have a slightly different syntax for tags and replaces. In order to tag a piece of text for later matching you must wrap it in braces {}. Then you can use \n in the replacement strings where n is the nth tagged expression. For your scenario here are the strings you should use

  • Find: {[A-Z][A-Z]}
  • Replace: if( usState == "\1")
JaredPar
Worked like a charm. Thank you.
Bryan