Thursday, 12 October 2017

regex - What is '?-mix' in a Ruby Regular Expression

itemprop="text">

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?


class="post-text" itemprop="text">
class="normal">Answer




mix is not the
English word mix, it's options of
Regexp.




See
href="http://ruby-doc.org/core-2.2.0/Regexp.html#method-i-to_s">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$)


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print ...