只是尝试在ruby中调试正则表达式.当我打印正则表达式的内容时,它显示?-mix在正则表达式的开头,即使这些字符不是表达式的一部分.请参阅以下IRB输出以查看此图示
irb(main):028:0* EXPR = /^a$/
=> /^a$/
irb(main):029:0> EXPR
=> /^a$/
irb(main):030:0> puts EXPR
(?-mix:^a$)
=> nil
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,当您使用puts打印出正则表达式的内容时,就会出现?-mix在开头.我应该担心吗?它来自哪里?
Yu *_*Hao 39
mix不是英文单词mix,它的选项Regexp.
返回包含正则表达式及其选项的字符串(使用(
?opts:source)表示法.
在您的示例中,m用于多行模式,i用于不区分大小写,x用于扩展模式.破折号之前的选项打开,之后的选项关闭(默认).问题的例子,?-mix关闭所有选项.
你可以打开它们:
puts /^a$/mix
# =>(?mix:^a$)
Run Code Online (Sandbox Code Playgroud)