gpt4 book ai didi

ruby - 用于查看字符串是否包含某个范围内的数字的正则表达式模式

转载 作者:数据小太阳 更新时间:2023-10-29 08:14:52 25 4
gpt4 key购买 nike

我正在尝试匹配字符串中任意位置 400 到 499 之间的数字。例如,两者:

string = "[401] One too three"
string2 = "Yes 450 sir okay"

应该匹配。两者:

string3 = "[123] Test"
string4 = "This is another string"

应该会失败。

编写正则表达式的最佳方式是什么?我写道:

string =~ /\d{3}/

查看字符串是否包含三位整数。如何查看是否在范围内?

最佳答案

如果你实际上不需要数字后缀,而只是需要确定yesno字符串包含400-499范围内的数字,你可以:

  1. 检查你是否在一行的开头,或者后面有一个非数字字符
  2. 数字“4”后跟
  3. 任何 2 位数字后跟
  4. 行尾或非数字字符

所以你最终得到一个看起来像这样的正则表达式

regex = /(?:^|\D)4\d{2}(?:\D|$)/

或者,通过使用消极的前瞻/回顾:

regex = /(?<!\d)4\d{2}(?!\d)/

并且您需要执行上面的第 1 步和第 4 步来排除 1400-1499 和 4000-4999 等数字(以及其他具有超过 3 位数字且在某处隐藏了 400-499 的此类数字)。然后您可以使用 String#match?在较新的 ruby​​ 版本中得到一个简单的 bool 值:

string.match?(regex)   # => true
string2.match?(regex) # => true
string3.match?(regex) # => false
string4.match?(regex) # => false
"1400".match?(regex) # => false
"400".match?(regex) # => true
"4000".match?(regex) # => false
"[1400]".match?(regex) # => false
"[400]".match?(regex) # => true
"[4000]".match?(regex) # => false

相当简单的正则表达式,如果您只需要简单的yesno

,则无需提取匹配并将其转换为整数

关于ruby - 用于查看字符串是否包含某个范围内的数字的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51433551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com