in reply to Re: Re: Problem with regex from Learning Perl (3rd edition)
in thread Problem with regex from Learning Perl (3rd edition)

Hopefully I can break this down in a little better explaination.


/"([^"]*)"/
  • 1. [^"] is a negated character class. Which means 'any character except (")'.
  • 2. [^"]* Your regex wants 'zero or more (*)' of that negated character class.
  • 3. /"([^"]*) then your regex wants 1 double quote at the beginning of a match (not the line)
  • 4. /"([^"]*)"/ then your regex wants 1 double quote at the end of the match
  • Ok now lets break down what happens with your string "hello"you"

  • " Your first character. Your regex is happy it matches number 3
  • hello" Your regex clicks along happily down the next 5 non-double quotes till it sees ". Oops this breaks rule number 1.
  • hello Your regex moves back one click. It is happy again it matches number 2
  • "hello" Your regex moves forward one click to match number 4.
  • You regex is happy and matches all 4 of your rules

    If you apply this to your other regex /^"([^x]*)"$/ you can see why your examples work

    HTH

    grep
    grep> cd /pub
    grep> more beer

    Replies are listed 'Best First'.
    Re: Re: Re: Re: Problem with regex from Learning Perl (3rd edition)
    by slocate (Novice) on Mar 10, 2002 at 02:54 UTC
      I knew that...:p