Regular Expressions

Flashcard 7 of 10

Given the following sample, how could we define a pattern that would capture the keys in this hash string, without including the colon?

sample = \
  "{ count: 2, title: 'Hello', section: 3 }"

We can use a "lookahead" that asserts that a colon follows our match. In this case we use a "Positive lookahead assertion" which has the form (?=pat), where our pattern is :.

sample = \
  "{ count: 2, title: 'Hello', section: 3 }"

sample.scan(/\w+(?=:)/)
#=> ["count", "title", "section"]

Lookaheads are another type of anchor like ^ or \b, and like other anchors they are "zero-width". This means whatever matches the anchor will not be included in the match output.

There are four "lookaround" anchors:

Check out the regex docs section on anchors for more detail.

Return to Flashcard Results