Sentry Answers>Linux>

Write a regular expression to match lines not containing a word

Write a regular expression to match lines not containing a word

David Y.

The Problem

How can I write a regular expression to match lines not containing a specific word?

The Solution

You can do this using a negative lookahead assertion. The PCRE regular expression below will match any line that does not contain the word “word”:

Click to Copy
/^((?!word).)*$/gm

Here’s what it does:

  • /: Start regular expression.
  • ^: Match the beginning of a line.
  • (: Start capture group 1.
  • (?!word): Negative lookahead assertion. If “word” is found, discard the current match, otherwise continue evaluating the expression.
  • .: Match any character.
  • ): End capture group 1.
  • *: Match 0 or more of capture group 1.
  • $: Match the end of the line.
  • /: End regular expression
  • g: Global flag. Find all matches in the string, not just the first one.
  • m: Multiline flag. Use ^ and $ to match the start and end of a line, rather than the start and end of the whole string.

Notably, this expression will not match empty lines. If this behavior is desired, we can add the s (dotall) flag, which will make . match all characters including newlines:

Click to Copy
/^((?!word).)*$/gms

If the s flag is not supported by your regex implementation, you can replace . with [\s\S] (\s matches whitespace characters, and \S matches everything except whitespace characters).

Click to Copy
/^((?!word)[\s\S])*$/gm
  • Syntax.fmListen to the Syntax Podcast (opens in a new tab)
  • ResourcesWhat is Distributed Tracing (opens in a new tab)
  • Syntax.fm logo
    Listen to the Syntax Podcast (opens in a new tab)

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.