代码之家  ›  专栏  ›  技术社区  ›  Abeezuo

Ruby正则表达式,用于精确包含x个整数的字符串

  •  1
  • Abeezuo  · 技术社区  · 2 年前

    我想制作一个ruby正则表达式,它匹配的字符串正好包含x个整数。我希望字符串也能包含其他单词。

    例子: 如果 x=2 ,以下内容应匹配: “有三辆车的时速超过45英里”

    其中第一个整数是3,第二个整数是45。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Tim Biegeleisen    2 年前

    您可以使用通用正则表达式模式:

    ^\D*(?:\d+\D+){2}$
    

    你可以换新的 {2} 不管你期望字符串中有多少个数字。这是一份工作报告 demo .

        2
  •  0
  •   Cary Swoveland    2 年前

    我会写

    str = "There were 3 cars going over 45 miles per hour"
    
    str.scan(/\d+/).size == 2
      #=> true
    

    str.gsub(/\d+/).count == 2
      #=> true
    

    后者的优点是 str.gsub(/\d+) 返回枚举数,而 str.scan(/\d+/) 创建一个临时数组。

    看到 String#gsub 这需要一个论点,但没有阻碍 Enumerable#count .