只是想在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:

返回包含正则表达式及其选项的字符串(使用(?opts:source)表示法).

在你的例子中,m代表multiline modei代表case insensitivex代表extended mode.Options before the dash are on, those after are off (default).问题的例子是?-mix,所有选项都关闭了.

你可以像这样打开它们:

puts /^a$/mix
# =>(?mix:^a$)

Ruby相关问答推荐

Ruby错误-应为数组或字符串,已获取哈希

Ruby 3 从多个预定纤程中收集结果

如何从外部获取给定 lambda 的参数值,而不显式返回其绑定?

如何在 ruby​​ 中通过 SSL 调用 HTTP POST 方法?

Ruby 相当于 Groovy 的 Elvis (?:) 运算符?

将 ruby​​ hash .default 设置为列表

在 ruby​​ 中调试第三方 gem 的最佳方法

如何在 VIM 中导航 Ruby 方法?

如何合并散列数组以获取值数组的散列

Ruby代码美化,多行拆分长指令

如何将值保存到 YAML 文件中?

为什么在 ruby​​ / rails / activerecord 中并不总是需要 self ?

如何设置方法测试中使用的私有实例变量?

如何在 Ruby 符号中转义破折号-?

Ruby RVM apt-get 更新错误

无法在 Windows 上安装 Aptana Studio 3.6

我的Ruby在哪里?

判断是否在 SASS 中定义了变量

创建一个接受参数散列的 ruby​​ 方法

如何使用 Ruby-Rails 删除文件夹的所有内容?