From: Mark Hubbart Date: 2005-01-18T07:00:48+09:00 Subject: Re: My regexp stupidity needs assistance before loose all my hair! On Tue, 18 Jan 2005 06:26:08 +0900, Zach Dennis wrote: > trans. (T. Onoma) wrote: > > Let me painfully honest: I hate parsing, especially w/ regexp, and I don't > > care if it's because I stupid and suck at it. It shouldn't have to be this > > hair pulling! Anyway... Can some one please give the regular expression to > > match the first square bracket's contents. In this case it would be "Hello". > > > > s = <<-EOS > > [Hello] > > This [b]is[b.] a test. > > [Hello.] > > EOS > > The trick here is to make sure you are non-greedy. > > s =~ /\[([^\]]*)\]/ Or: s =~ /\[.*?\]/ which uses the ? non-greedy modifier to ensure that only the very next "]" is matched. For example: str = <"[this] [is a test]\nhere are[some]brackets\n[brackets ]\n[] no words\nno brackets\n" str.each{|line| p line.scan(/\[.*?\]/)} ["[this]", "[is a test]"] ["[some]"] ["[brackets ]"] ["[]"] [] cheers, Mark