Module lessons (4/4)
Empty lines and trim
Let's combine anchors + the m flag for two extremely useful idioms:
matching empty lines and trimming the whitespace at the start/end
of each line.
Empty lines
An empty line is a position where ^ and $ coincide: zero characters
between the start and the end of the line.
Pattern: ^$
Flag: gm
Sample: uno\n\ndue\n\n\ntreThe match is zero-width: the highlighter will show a marker between
the two \n. To also match "empty but with spaces" lines, use
^\s*$.
Trimming a line
To remove whitespace at the start or end of a line, combine an anchor +
the \s class + a quantifier:
^\s+ matches whitespace at the start of a line (can then be replaced with the empty string, module 7)
\s+$ matches whitespace at the end of a lineWith the gm flags you collect every margin whitespace of every line.
Identifying empty lines and trailing spaces
A pure empty line is matched by ^$ (with the m flag). However, many apparently empty lines contain invisible spaces or tabs. The pattern ^\\s*$ intercepts these lines too, making data cleanup much easier.
Try it
Find every empty line in the sample (zero characters between two newlines). Use `^$` with the `gm` flags.
Show hint
An empty line is a position where ^ and $ coincide. The m flag is mandatory.
Solution available after 3 attempts
Review exercise
Find the whitespace at the end of every line (the whitespace characters that precede the newline). Use `\\s+$` with the `gm` flags.
Show hint
\\s+ matches one or more whitespace characters (including tab). With gm you anchor to the end of every line.
Solution available after 3 attempts
Additional challenge
Find all lines that start with the `#` character (entire comment lines, ignoring inline comments).
Show hint
Use ^ at the start of the pattern to indicate that the comment character # must start the line.
Solution available after 3 attempts