只是尝试调试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/

10-13 00:14