in reply to Re: if var isnt used
in thread if var isnt used

my ($vorzeichen_a_form,$a_form,$vorzeichen_b_seit,$b_seit,$vorzeichen_c_yab, $c_yab) = ($formel =~ m/y=

(+\-)? #$vorzeichen_a_form
(.+)? #$a_form
x\^2 #x^2
(+\-.+)? #$vorzeichen_b_seit, $b_seit
(+\-.+)? #$vorzeichen_c_yab, $c_yab
$/x);

it should work on these combinations:
y=x^2 #no a, b,c
y=-x^2

y=1x^2 #no b,c
y=-1x^2

y=x^2-2 #no b
y=-1x^2-2
y=1x^2-2

y=x^2-2x #no c
y=-1x^2-2x
y=1x^2-2x

y=x^2-2x-2 #a,b, and c are present
y=-1x^2-2x-2
y=1x^2-2x-2

ofcourse, positive values are possible
and ofcourse my idea doesnt work :(

Replies are listed 'Best First'.
Re^3: if var isnt used
by tirwhan (Abbot) on Dec 24, 2005 at 15:44 UTC

    I second hollis suggestion, but here's a regex that does this anyway:

    while($formel=<DATA>) { my ($vorzeichen_a_form, $a_form, $vorzeichen_b_seit, $b_seit, $vorzeichen_c_yab, $c_yab) = $formel =~ m/y\s*=\s* ([-+])? #$vorzeichen_a_form (\d+)? #$a_form x\^2\s* (?: # non-capturing parentheses ([-+])? #$vorzeichen_b_seit (\d+)? #$b_seit x\s* )? # make this part optional (?: ([-+])? #$vorzeichen_c_yab (\d+)? #$c_yab )? /x; print join(":",($vorzeichen_a_form, $a_form, $vorzeichen_b_seit, $b_seit, $vorzeichen_c_yab, $c_yab))."\n"; } __DATA__ y=x^2 #no a, b,c y=-x^2 y=1x^2 #no b,c y=-1x^2 y=x^2-2 #no b y=-1x^2-2 y=1x^2-2 y=x^2-2x #no c y=-1x^2-2x y=1x^2-2x y=x^2-2x-2 #a,b, and c are present y=-1x^2-2x-2 y=1x^2-2x-2

    A computer is a state machine. Threads are for people who can't program state machines. -- Alan Cox