When writing a worksheet for students, I always include the answers, as follows:
```
Figure 1 shows the contents of a memory location
#+CAPTION: Figure 1
|10100111|
What is the denary equivalent of the contents of
this memory location if it represents an unsigned
binary integer? (1 mark)
ANS: 167
What is the denary equivalent of the contents of
this memory location if it represents an unsigned
binary fixed point number, with 4 bits before and
4 bits after the binary point? (2 marks)
ANS: 10.4375
What is the denary equivalent of the contents of
this memory location if it represents a two's
complement binary integer? (2 marks)
ANS: -89
What is the hexadecimalequivalent of the binary
pattern shown in Figure 1? (1 mark)
ANS: A7
```
When I've finished I save a copy of the sheet and then remove the answers, leaving me with a worksheet and the answer sheet. Emacs makes it easy to remove the answers using
**M-x flush-lines ^ANS:**
As it says in the documentation, **flush-lines** deletes lines containing matches for REGEXP.
Use **flush-lines** to delete blank lines as follows:
**M-x flush-lines ^$**
**flush-lines** is part of **replace.el**. There are some nice functions in **replace.el** As it says in the introductory comments:
> This package supplies the string and regular-expression replace functions documented in the Emacs user's manual.
**M-x keep-lines** is the inverse of **flush-lines**, handy if you want a sheet with the answers only
**M-x how-many** returns the number of occurrences of REGEXP following the point. Handy for counting how many ANS: there are.
**M-x occur** opens a buffer showing all lines in the current buffer containing a match for REGEXP. [See this post on stylesheets](http://tonyballantyne.com/tech/stylesheets/) for more on this.
Lastly, **map-query-replace-regexp** will replace a matches for a regexp in rotation. As a simple example, suppose you want assign a group to a collection of students:
```
gp: Adam
gp: Bella
gp: Carol
gp: Danuta
gp: Ed
gp: Fran
```
Select the names and
**map-query-replace-regexp**
**^gp:**
**red: blue: green:**
gives
```
red: Adam
blue: Bella
green: Carol
red: Danuta
blue: Ed
green: Fran
```
# Related Posts
- [[Regexp Builder]]: Learn about Regexps
- [[Regexp Exercises]]: Practice what you've learned