Skip to content

Latest commit

 

History

History
37 lines (27 loc) · 1.25 KB

extract-capture-group-matches-with-string-slices.md

File metadata and controls

37 lines (27 loc) · 1.25 KB

Extract Capture Group Matches With String Slices

Ruby's string slice syntax allows us to use the square brackets to access portions of a string. It's most common to pass positional integer index arguments or a range. However, in true Ruby fashion, another way of thinking about defining the slice of a string is based on a regex match.

We can pass a regex and an int (specifying which match we want) to extract some portion of a string based on the regex match. That includes capture groups.

Here are a couple examples of extracting matching capture groups as well as getting the entire regex match:

> "[email protected]"[/.+\+(.+)@(.+)/, 1]
=> "abc123"

> "[email protected]"[/.+\+(.+)@(.+)/, 2]
=> "email.com"

> "[email protected]"[/.+\+(.+)@(.+)/, 0]
=> "[email protected]"

> "[email protected]"[/.+\+(.+)@(.+)/]
=> "[email protected]"

The 0th match (which is the default) corresponds to the full match. Each integer position after that corresponds to any capture groups. This maps directly to the underlying MatchData object:

> /.+\+(.+)@(.+)/.match("[email protected]")
=> #<MatchData "[email protected]" 1:"abc123" 2:"email.com">

source