ruby - 该 Ruby/RegEx 代码有什么作用?

标签 ruby regex

我正在阅读《Beginning Ruby From Novice To Professional 2nd Edition》,目前在第 49 页,我们正在学习 RegEx 基础知识。书中的每个正则表达式片段后面都有一个尚未解释的代码。

{ |x| puts x }

在上下文中:

"This is a test".scan(/[a-m]/) { |x| puts x }

有人可以告诉我吗?

最佳答案

scan这样的方法是一个迭代器;在这种情况下,每次匹配传递的正则表达式时,scan 都会执行程序员指定的操作。在 Ruby 中,“某物”被表示为一个 block ,由 { code }do code end 表示(具有不同的优先级),其中作为特殊参数传递给该方法。 block 可以以参数(和局部变量)列表开始,即 |x| 部分; scan 使用它匹配的字符串调用 block ,该字符串绑定(bind)到 block 内的x。 (此语法来自 Smalltalk。)

因此,在这种情况下,scan 将在每次 /[a-m]/ 匹配时调用其 block 参数,这意味着 之间字符串中的每个字符am

关于ruby - 该 Ruby/RegEx 代码有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6674231/

相关文章:

ruby-on-rails - 如果我们将参数缓存到操作中的本地变量中,它会有所帮助还是相同?

ruby-on-rails - 有没有一种方法可以将 rails 中的值设置为 nil 并保存?

regex - 在 Perl 正则表达式中匹配捕获组的反向翻译

c# - 跨语言更正正则表达式模式

c# - 正则表达式匹配所有字符直到到达字符,但也包括最后一个匹配

java - 如果 - 字符后面只有空格,则正则表达式匹配失败

java - 在 Yodlee 上构建的最佳堆栈是什么

ruby-on-rails - 无法安装 Nokogiri gem

python - Python 是否有像 Ruby 中的 ||= 这样的 "or equals"函数?

regex - 将文件中的部分 url 替换为 sed