只是尝试调试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
如您所见,当您使用
puts
打印出正则表达式的内容时,开头是?-mix
。我应该为此担心吗?它来自哪里? 最佳答案
mix
不是英语单词mix,它是Regexp
的选项。
参见 Regexp#to_s
:
在您的示例中,m
用于多行模式,i
用于不区分大小写,x
用于扩展模式。 破折号前的选项已打开,折线后的选项已关闭(默认)。问题的示例?-mix
禁用了所有选项。
您可以像这样打开它们:
puts /^a$/mix
# =>(?mix:^a$)
关于ruby - Ruby正则表达式中的 '?-mix'是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28630936/