[LON-CAPA-users] Regular expressions in string response

Sally Hunnicutt lon-capa-users@mail.lon-capa.org
Tue, 1 May 2007 14:22:23 -0400


Hello,

Have you tried using the chemical response problem type?  

Also, I have several problems (precipitation, simple redox (element -
compound), and acid-base) written for reactions (look for
VCU/sshunnic/chem101/Chapter4).  These should have the scripts
available.

Sally

Dr. Sally S. Hunnicutt
Assistant Chair & Associate Professor
VCU Department of Chemistry
sshunnic@vcu.edu
804-827-0531
Oliver Hall 4023B

-----Original Message-----
From: lon-capa-users-admin@mail.lon-capa.org
[mailto:lon-capa-users-admin@mail.lon-capa.org] On Behalf Of
Robert_Brewington@er.monroe.edu
Sent: Tuesday, May 01, 2007 2:17 PM
To: lon-capa-users@mail.lon-capa.org
Subject: Re: [LON-CAPA-users] Regular expressions in string response

Yeah, I used to use a lot of regular expressions back in my software
development days (in vi). Very powerful, very cool, very hard to
maintain.

So, I tried to get this to work, still not quite right. I want the
answer
to recognize a chemical equation; the problem is, the kids put extra or
no
blanks randomly between the compound formulas. For example, the answer

2Ag + Ca(NO3)2 -> 2AgNO3 + Ca

should also recognize

2Ag   +   Ca(NO3)2   -> 2AgNO3    + Ca
2Ag+Ca(NO3)2->2AgNO3+Ca
Ca(NO3)2 + 2Ag -> 2AgNO3 + Ca
2Ag + Ca(NO3)2 -> Ca + 2AgNO3

and so on.

For the moment, I am just trying to get it to accept the first answer. I
can get the pipe part to work once this is right. I have my regular
expression as

$regexpans = '/^(2Ag\s*\+\s*Ca(NO3)2\s*->\s*2AgNO3\s*\+\s*Ca)\s*$/';

where I backslashed the "+" because the regular expression routine
thought
it was part of the \s* construct. This expression is not working,
though.
With or without spaces, no answer is accepted. I assume I am doing
something simple wrong:(

The correct string (as above) shows in the answer field when I test as
author. Oh, yes I did remember to specify regular expressions in the
stringresponse, and it works with other regular expressions.

brew

-----lon-capa-users-admin@mail.lon-capa.org wrote: -----

To: lon-capa-users@mail.lon-capa.org
From: Gerd Kortemeyer <korte@lite.msu.edu>
Sent by: lon-capa-users-admin@mail.lon-capa.org
Date: 05/01/2007 09:14AM
Subject: Re: [LON-CAPA-users] Regular expressions in string response

Hi,

On May 1, 2007, at 8:33 AM, Robert_Brewington@er.monroe.edu wrote:

>
> I am trying to set up a string response question that takes the
> student
> answer and removes blanks before comparing to the correct answer.
> Hopefully
> someone has a code snippet that does this?
>
> Student input:
> a b  c
>
> I want to match to
> /^(abc|acb|bca)\b)

\s* matches any number of spaces, including zero:

/^(a\s*b\s*c|a\s*c\s* ...) ...

>
> (Incidentally, what does the "b" do in this expression?)

Matches a word boundary, and is not appropriate if you want to
consider spaces. Your whole expression would be

/^\s*(a\s*b\s*c|a\s*c\s*b|b\s*c\s*a)\s*$/

>
> I am looking for something like the vi command to remove spaces:
> s/ //g

Rather than removing them, I would match them.

See

   http://www.regular-expressions.info/

As the saying goes:

     You have a problem, and think: "Oh, I'll just use a regular
expression!" - now you have two problems.

But seriously, I love regular expressions.

- Gerd.
_______________________________________________
LON-CAPA-users mailing list
LON-CAPA-users@mail.lon-capa.org
http://mail.lon-capa.org/mailman/listinfo/lon-capa-users


_______________________________________________
LON-CAPA-users mailing list
LON-CAPA-users@mail.lon-capa.org
http://mail.lon-capa.org/mailman/listinfo/lon-capa-users