views:

164

answers:

3

Here is my text:

<span class="c1">Testing "this string"</span>

and I want to end up with this:

<span>Testing "this string"</span>

so I tried to use this regex in Notepad++ to replace with nothing:

 class=".*"

but that matches this:

 class="c1">Testing "this string"

How do I stop that match after one instance of "?

A: 
class=".*?"

Will make the * lazy.

Ian Henry
Notepad++ doesn't recognize ungreedy modifiers.
BoltClock
A: 

In such a simple case, this will do. Find

 class=".*">

Replace with

>
BoltClock
+5  A: 

By default, regular expressions are greedy (and so .* will match as much as it possibly can, which, in your case is c1">Testing "this string). In general, you have two ways of getting around this:

  1. Use a nongreedy (or lazy) modifier (.*?), which will match as little as possible (in your case, just c1). Notepad++ doesn't support lazy modifiers, though.
  2. Specify exactly what you want to match with class="[^"]*", which will match everything that isn't a quote. In general, this is the more optimized solution, as well.
Daniel Vandersluis
+1 for the complementary character class. (I'll do it once my vote limit resets though.)
BoltClock
Notepad++ didn't work with the ?, but the second solution was perfect. Thanks!!
Khan
@Khan: as BoltClock mentioned below, Notepad++ doesn't support ungreedy modifiers.
Daniel Vandersluis