Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

So, Notepad++ got updated to v6.0. One of their new features is PCRE (Perl Compatible Regular Expressions).

I tried to use this new feature to find and replace things in a file. I tried the regular expression:

{\$([a-zA-Z_]*)}

and it yelled at me, saying "Invalid regular expression".

I tested this regex in other programs (like my main IDE, Geany), and it worked fine.

Why does this not work in Notepad++ 6.0?

share|improve this question
    
What do you expect your regexp to do? –  Daniel Andersson Apr 6 '12 at 14:54
    
I'd expect it to match strings like this: {$first_name}, {$street_address}. Which it does: rubular.com/r/uSup4HRn7n –  Rocket Hazmat Apr 6 '12 at 14:55

1 Answer 1

up vote 3 down vote accepted

You have to escape the {} like so:

\{\$([a-zA-Z_]*)\}

I assume Geany and rubular.com don't use PCRE (or they use it differently). Please note that {} are usually used to denote quantifiers.

Without having checked the source, I can only assume that Notepad++ tries to be too smart before passing the regular expression to the PCRE library. If I run the following code in PHP:

echo preg_match( '{\$([a-zA-Z_]*)}', '{$something}' );

It prints 1 right away. No need to escape anything.

Sorry that I can't explain it :(

share|improve this answer
1  
I'm a bit confused myself, to be honest. –  Oliver Salzburg Apr 6 '12 at 15:19
    
In PHP, you need to escape the $, but not the {}. ideone.com/oy44V –  Rocket Hazmat Apr 6 '12 at 15:30
    
@Rocket I think you only need to escape $ if you use double-quotes " instead of single-quotes '. –  Oliver Salzburg Apr 6 '12 at 15:55
1  
But, $ means "end of string" in regex. You'd need to escape it double quotes because of PHP's variable interpolation. –  Rocket Hazmat Apr 6 '12 at 15:56
1  
Sorry, I got confused. You're obviously right. Thanks for noticing. –  Oliver Salzburg Apr 6 '12 at 15:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.