views:

431

answers:

4

I need to search all of my codebase for "Url" and replace it with "URL". If I search for Url in Visual Studio I also get all my variables with "Url" in it.

Anyone have a Regex I can use to only find Url within a quoted string e.g. "Use this Url:"?

Edit

I was looking looking for a quick and dirty way to find designer text and hard coded strings that had Url in the string and change them to URL.

A: 

"Use this (Url):", then you can replace $1 (or whatever syntax Visual Studio uses). You may need to escape the quotes, and I'm not sure if Visual Studio lets you parenthesize parts of the regex.

Rusky
+4  A: 

Visual Studio has a "quoted string" operator :q. If you search for :qUrl with 'Use: Regular expressions' and 'Match case' on, it should find all instances of "Url" only in strings.

Update: The above is incorrect. :q just searches for a quoted string, but you can't put anything into it. My testing was just showing cases that looked correct, but were just coincidentally correct. I think instead, you want something like:

^(:q*.*)*(("[^"]*Url[^"]*")|('[^']*Url[^']*'))(:q*.*)*$
tghw
Ooohhh +1 for the :q. I didn't know that.
Spencer Ruport
Unless I'm doing something wrong, it doesn't even find my example "Use this Url:", and it takes quite a bit of time to run even on a single 200 line document on my quad core.
Jeff Alexander
+1  A: 

What I really ended up needing was:

("[^"]*Url[^"]*")

And thanks to the tip from tghw who pointed out the :q shortcut in Visual Studio equates to:

(("[^"]*")|('[^']*'))

I realized I needed to use the first portion to find only the double quoated strings I was looking for.

Both this regex and a standard find with 'Match case' and 'Match whole word' yielded results with some strings I was hoping to not find but eliminated the code with 'Url' in it.

Jeff Alexander
+2  A: 

If you just quickly want to search for a quoted string you can use the "Use Wildcards" Find Option in Visual Studio.

For example:

"*Url*"
Kobus Smit