What is '?-mix' in a Ruby Regular Expression
regex, ruby
Solution
`mix` is not the English word mix, it's options of `Regexp`.
See `Regexp#to_s`:
Returns a string containing the regular expression and its options (using the (`?opts:source`) notation.
In your example, `m` is for multiline mode, `i` is for case insensitive, and `x` is for extended mode. Options before the dash are on, those after are off (default). The question's example, `?-mix`, has all options off.
You can turn them on like:
puts /^a$/mix
# =>(?mix:^a$)
Problem
Just trying to debug a regular expression in ruby. When I print the contents of a regular expression, it shows `?-mix` at the beginning of the regular expression even though those characters were not part of the expression. Please see the following IRB output to see this illustrated ``` irb(main):028:0* EXPR = /^a$/ => /^a$/ irb(main):029:0> EXPR => /^a$/ irb(main):030:0> puts EXPR (?-mix:^a$) => nil ``` As you can see, when you use `puts` to print out the contents of a regular expression, there is `?-mix` at the beginning. Should I be concerned by this? Where is it coming from?