mirror of
https://github.com/jbranchaud/til
synced 2026-01-04 23:58:01 +00:00
Add Add Comments To Regex With Free-Spacing as a Ruby til
This commit is contained in:
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud).
|
For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud).
|
||||||
|
|
||||||
_1137 TILs and counting..._
|
_1138 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -864,6 +864,7 @@ _1137 TILs and counting..._
|
|||||||
### Ruby
|
### Ruby
|
||||||
|
|
||||||
- [A Shorthand For Rerunning Failed Tests With RSpec](ruby/a-shorthand-for-rerunning-failed-tests-with-rspec.md)
|
- [A Shorthand For Rerunning Failed Tests With RSpec](ruby/a-shorthand-for-rerunning-failed-tests-with-rspec.md)
|
||||||
|
- [Add Comments To Regex With Free-Spacing](ruby/add-comments-to-regex-with-free-spacing.md)
|
||||||
- [Add Linux As A Bundler Platform](ruby/add-linux-as-a-bundler-platform.md)
|
- [Add Linux As A Bundler Platform](ruby/add-linux-as-a-bundler-platform.md)
|
||||||
- [Are They All True?](ruby/are-they-all-true.md)
|
- [Are They All True?](ruby/are-they-all-true.md)
|
||||||
- [Assert About An Object's Attributes With RSpec](ruby/assert-about-an-objects-attributes-with-rspec.md)
|
- [Assert About An Object's Attributes With RSpec](ruby/assert-about-an-objects-attributes-with-rspec.md)
|
||||||
|
|||||||
50
ruby/add-comments-to-regex-with-free-spacing.md
Normal file
50
ruby/add-comments-to-regex-with-free-spacing.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Add Comments To Regex With Free-Spacing
|
||||||
|
|
||||||
|
Ruby's regex syntax supports a [Free-Spacing
|
||||||
|
mode](https://ruby-doc.org/core-3.0.1/Regexp.html#class-Regexp-label-Free-Spacing+Mode+and+Comments).
|
||||||
|
When this mode is enabled, all the literal whitespace in the regular expression
|
||||||
|
is ignored and comments can be included at the end of lines. This is enabled by
|
||||||
|
appending the `x` option at the end of the regex.
|
||||||
|
|
||||||
|
Here is a regex with Free-Spacing mode enabled (see the `x` at the end).
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
simple_email = /\A.+@.+\z/x
|
||||||
|
```
|
||||||
|
|
||||||
|
Though it's enabled, it is not really being used.
|
||||||
|
|
||||||
|
Here is the same regular expression, but this time I've spaced it out and added
|
||||||
|
comment annotation to make the regex easier to understand.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
simple_email = /
|
||||||
|
\A # beginning of the string
|
||||||
|
.+ # any opening characters
|
||||||
|
@ # the email's `@` symbol
|
||||||
|
.+ # the rest of the email
|
||||||
|
\z # the end of the string
|
||||||
|
/x
|
||||||
|
```
|
||||||
|
|
||||||
|
To be sure the extra space and comments aren't messing things up, here is some
|
||||||
|
code to test it out.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
test_emails = [
|
||||||
|
'taco',
|
||||||
|
'email@example.com',
|
||||||
|
'more.complex+email@example.com',
|
||||||
|
'@'
|
||||||
|
]
|
||||||
|
|
||||||
|
test_emails.each do |email|
|
||||||
|
if (simple_email =~ email) == 0
|
||||||
|
puts "#{email} looks like an email"
|
||||||
|
else
|
||||||
|
puts "#{email} may not be an email"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
[source](https://twitter.com/jasonrudolph/status/1413240725064519681?s=20)
|
||||||
Reference in New Issue
Block a user