1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-02 22:58:01 +00:00

Add Named Regex Captures Are Assigned To Variables as a ruby til

This commit is contained in:
jbranchaud
2020-12-20 22:39:06 -06:00
parent 05deaf1f46
commit 8886de4ff8
2 changed files with 26 additions and 1 deletions

View File

@@ -9,7 +9,7 @@ and pairing with smart people at Hashrocket.
For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud).
_978 TILs and counting..._
_979 TILs and counting..._
---
@@ -808,6 +808,7 @@ _978 TILs and counting..._
- [Map With Index Over An Array](ruby/map-with-index-over-an-array.md)
- [Mock Method Chain Calls With RSpec](ruby/mock-method-chain-calls-with-rspec.md)
- [Mocking Requests With Partial URIs Using Regex](ruby/mocking-requests-with-partial-uris-using-regex.md)
- [Named Regex Captures Are Assigned To Variables](ruby/named-regex-captures-are-assigned-to-variables.md)
- [Navigate Back In The Browser With Capybara](ruby/navigate-back-in-the-browser-with-capybara.md)
- [Next And Previous Floats](ruby/next-and-previous-floats.md)
- [Or Operator Precedence](ruby/or-operator-precedence.md)

View File

@@ -0,0 +1,24 @@
# Named Regex Captures Are Assigned To Variables
Both `String` and `Regexp` include the `=~` operator as a way of checking if a
string and a regex match.
When the `Regexp` version of
[`=~`](https://ruby-doc.org/core-2.5.1/Regexp.html#method-i-3D~) with named
capture groups, those named captures will be auto-assigned as local variables.
Here is a regex that includes a named capture: `(?<id>\d+)`. The parentheses
define the capture area and the `?<id>` specifies that whatever follows in the
capture will be named `id`.
```
/Tile: (?<id>\d+)/ =~ 'Tile: 1234'
#=> 0
id
=> "1234"
```
After the match operator (`=~`) runs in the first line, the local variable `id`
gets assigned to whatever it matches in the corresponding string.
[source](https://ruby-doc.org/core-2.5.1/Regexp.html#class-Regexp-label-Capturing)