# Quick Scripts

home

## Unescape tab and newline escapes

28 Apr 2010

You want to use regular expressions in perl to turn the literal `'\t'` and `'\n'` two character sequences into the actual tab and newline characters.

The trivial solution doesn’t work if you also want to allow the use of `'\\'` to escape the “escape” sequence (e.g. so that `'\\node'` expands to `'\node'`, but `'\\\n'` does expand to a blackslash followed by a newline).

What you actually need, is something like

``````s/\\(.)/\\\$1]/g;
s/\\n]/\n/g;
s/\\t]/\t/g;
s/\\(.)]/\$1/g;``````

Small discussion: this first substitution encapsulates every escape sequence `'\X'` into `'\X]'`, so that the escaped `'X'` can not interfere with the rest of the string. Then you can evaluate all the escapes you want, e.g. turn `'\n]'` into a newline. Finally all remaining `'\X]'` are expanded back to `'X'`.