将字符串与数字占位符匹配

时间:2017-10-02 21:02:22

标签: ruby regex

我想匹配以下字符串:使用字符串匹配:https://apidock.com/ruby/String/match

loss = tf.minimum(tf.exp(n), MAX_VALUE)

我必须使用哪个正则表达式来匹配此字符串中的数字占位符?谢谢

"The account 340394034 is finalized" "The account 9394834 is finalized" "The account 12392039483 is finalized" "The account 3493849384 is finalized" "The account 32984938434983 is finalized"

2 个答案:

答案 0 :(得分:1)

这是完整的正则表达式

\d+

根据输入,假设字符串中可能存在其他数字,您可以使用它来获取捕获组1的内容:

account\s+(\d+)

答案 1 :(得分:0)

如果您只想使用match方法确定给定字符串是否与示例中的模式匹配,则可以执行以下操作:

example = "The account 32984938434983 is finalized"

if example.match(/The account \d+ is finalized/)
  puts "it matched"
else
  puts "it didn't match"
end

match方法返回一个MatchData对象(基本上是与正则表达式匹配的字符串部分,在这种情况下是整个事物)。在非匹配字符串上使用它将返回nil,这意味着您可以使用if语句的匹配方法的结果。

如果要提取字符串中的数字,只有字符串与模式匹配时,才能执行此操作:

example = "The account 32984938434983 is finalized"
match_result = example.match(/The account (\d+) is finalized/)

number = if match_result
           match_result.captures.first.to_i
         else
           number = nil # or 0 / some other default value
         end

正则表达式中的括号形成“捕获组”。结果上的captures方法给出了所有捕获组匹配的数组。 first方法从该数组中获取第一个(在这种情况下仅)元素,to_i方法将字符串转换为整数。