我想匹配以下字符串:使用字符串匹配: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"
答案 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
方法将字符串转换为整数。