Regular Expression matching biggest possible

Hi,

I would like to remove comments from a JavaScript file with a Ruby
script. I discovered that my regular expression matching seems to match
the biggest possible substring.

def show_regexp(a,re)
  if a =~ re
    "#{$`}<<#{$&}>>#{$'}"
  else
    "no match"
  end
end
puts show_regexp("/* some comment */ some code /* some other comment
*/", /\/\*[\w\W]*\*\//)

This outputs

<</* some comment */ some code /* some other comment */>>

and I was hoping for it to find the individual comments.

<</* some comment */>> some code <</* some other comment */>>

What should my regular expression be?

Thanks,
Peter

You can make a regexp non greedy with a ?, that is

/\/\*[\w\W]*?\*\//
                ^

petermichaux@gmail.com wrote:

Hi,

I would like to remove comments from a JavaScript file with a Ruby
script. I discovered that my regular expression matching seems to match
the biggest possible substring.

Wow, I only had to wait 20 minutes before posting (or you could have checked the regexp madness thread).
Seems today is greedy regexp day :slight_smile:
V.-

···

--
http://www.braveworld.net/riva

____________________________________________________________________
http://www.freemail.gr - äùñåÜí õðçñåóßá çëåêôñïíéêïý ôá÷õäñïìåßïõ.
http://www.freemail.gr - free email service for the Greek-speaking.

Chris Alfeld wrote:

You can make a regexp non greedy with a ?, that is

/\/\*[\w\W]*?\*\//

Thanks Chris,

Now I can easily find what i need in the manual:)

Peter