ruby 正则表达式 : Find the last punctuation

标签 ruby regex

我正在尝试查找句子中的最后一个标点符号或空格字符。

鉴于我有这句话,"Hello! What is your name?"

我希望正则表达式返回 ? 的索引, 但我的正则表达式返回 ! 的索引

我的尝试:

> s = "Hello! What is your name?"
> s =~ /([[:punct:]\s])/
> puts $+
!
=> nil

我相信$+返回最高匹配,即最后一个匹配,但它只匹配第一个。

想法? 提前致谢!

最佳答案

要查找最后一个匹配项,请使用 rindex:

s = "Hello! What is your name?"
i = s.rindex(/[[:punct:]]/)
puts i

结果:

24

在线查看它:ideone

关于 ruby 正则表达式 : Find the last punctuation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001183/

相关文章:

javascript - 如何在 Javascript 中使用 AM/PM 创建时间正则表达式

regex - 为什么无法使用正则表达式解析 HTML/XML : a formal explanation in layman's terms

.net - 验证 .NET 或正则表达式中的 MSSQL 标识符(参数)

ruby - 如何使用 VSCode 执行 Ruby 脚本?

ruby - ruby中如何限制变量?

regex - 在 perl 输出中得到一个意想不到的空间

regex - 正则表达式转换为状态机的简短示例?

ruby - 如何在 ruby​​ 中使用 Net::HTTP 正确使用 ca_file 作为自签名证书?

Ruby 数据结构 - 最大队列

ios - 在 RubyMotion 中捕获 UIView