Many of us have used them - and those who haven't will truly appreciate them in the future - so using whatever language you like that supports RE's give this simple exercise a shot. =)
Houses are either: new, old or neither (ie null value)
Houses can only come in the following colors: red, blue, and green
#1 Just matching - return either a true or false. Write a RE that matches all of the possible colors of houses and color types:
My house is red.
My house is green.
My house is blue.
My house is black. => returns false
#2 Now do add a replace to #1. No one wants an old looking house, so change any occurance of old to new, like so...
My old house is red. => My new house is red.
My house is blue. => My house is blue.
#3 The previous, add the color orange, and use several colors per sentence.
Match combinations like...
My house has blue walls and red trim.
My house has green walls and blue trim.
In any order...
My house has red trim and orange walls.
Still replace... everywhere!
My house has an old red fence. => My house has a new red fence.
(if you're having trouble at this point, it may help to break it down into multiple simpler RE's that solve part of the problem and then think about forming them into more complex RE's).
#3 Match for any number of colors/fixtures (using simple english grammar)....
My house has blue walls, red trim and a red fence.
My house has green walls, blue trim, a red fence, and an orange fence.
My house has an old red tree house and blue fence. => My house has a new red tree house and blue fence.
#1 and #2 are simple... and good practice. I'll post a solution in Java either T or W depending on my free time. Maybe we'll parse a log file or something more useful next time.