【问题标题】:Ruby Regex: Return multiple matches after a patternRuby Regex:在模式后返回多个匹配项
【发布时间】:2012-05-14 07:24:17
【问题描述】:

我现在已经用谷歌搜索了很多,但我自己无法弄清楚这个正则表达式。我想收集一周中发生在“验证日:”和“all_exception_rules”文本之间的所有日子:

要搜索的字符串:

--- !ruby/object:IceCube::Schedule start_time: 2012-04-28 13:38:49.334561000 -07:00 end_time: duration: all_recurrence_rules: - !ruby/object:IceCube::WeeklyRule 验证: :间隔:-!ruby/object:IceCube::Validations::WeeklyInterval::Validation 间隔:1 week_start::sunday:base_hour:-!ruby/object:IceCube::Validations::ScheduleLock::Validation 类型::hour:base_min : - !ruby/object:IceCube::Validations::ScheduleLock::Validation 类型: :min :base_sec: - !ruby/object:IceCube::Validations::ScheduleLock::Validation 类型: :sec :day: - !ruby /object:IceCube::Validations::Day::Validation day: - 星期一 - 星期二 - 星期三 - 星期四 - 星期五 all_exception_rules: []

我最接近 rubular 的是:/Validation day: - (.*) all_exception/。这会以 rubular 形式显示所有天数(加上空格和破折号),但在我的 rails 应用程序中返回 Nil

  • 知道为什么这适用于 rubular,但不适用于我的应用?

  • 有没有一种简单的方法可以在没有空格和 破折号?

【问题讨论】:

    标签: ruby regex capture


    【解决方案1】:

    这有帮助吗?

    s.scan(/-\s(\w+)\s/) 
    #=> [["monday"], ["tuesday"], ["wednesday"], ["thursday"], ["friday"]]
    

    或者:

    s.scan(/-\s(\w+)\s/).map(&:first).join(" ") 
    #=> "monday tuesday wednesday thursday friday"
    

    【讨论】:

    • 这两个都返回我可以使用的日期数组。我想是时候再看看 String#scan 了。谢谢!
    猜你喜欢
    • 2020-06-04
    • 2020-02-09
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多