#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Nov 2007
    Posts
    1
    Rep Power
    0

    Can anyone help?


    Hi, I just need a little help with a problem Iam doing, I think I've almost figured it out I just need some help finishing it. Ive been asked to write a regular expression to see whether a string represents a valid roman numeral. So I did that pretty much..

    I=1
    V=5
    X=10
    L=50
    C=100
    D=500
    M=1000

    r1 = "M{0,1}"
    r2 = "(CM|CD|D?C{0,3})"
    r3 = "(XC|XL|L?X{0,3})"
    r4 = "(IX|IV|V?I{0,3})"
    pattern = "^#{r1}#{r2}#{r3}#{r4}$"

    roman = Regexp.new(pattern)

    end

    How would I go about testing this program, is there anything I need to add, to proceed from here?
    Any help would be much appreciated,
    Thanks,
    Dan
  2. #2
  3. Contributing User
    Devshed Novice (500 - 999 posts)

    Join Date
    Mar 2004
    Location
    Central Washington (USA)
    Posts
    518
    Rep Power
    11
    You should try to look at the output of roman.inspect() or roman.to_yaml() will give you an idea of what the object that Regexp.new() has returned. That may help you to proceed.
  4. #3
  5. Contributing User
    Devshed Novice (500 - 999 posts)

    Join Date
    Mar 2004
    Location
    Central Washington (USA)
    Posts
    518
    Rep Power
    11
    I forgot to include that in order to test your example, you'll have to do:
    Code:
    numeral = "XVIII"
    roman.match(numeral)
    Also, you can evaluate a regexp using the =~ operator like this:
    Code:
    "XVIII" =~ /romanRegexp/
    the results of the match are available in the global variables $1, $2, $3, ...

    Have a look at the documentation

IMN logo majestic logo threadwatch logo seochat tools logo