gpt4 book ai didi

ruby - 如何使用正则表达式匹配字符或不匹配

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

我正在尝试获取一组可能有或没有分隔符的数字,并以标准格式返回它们。以 SSN 为例:

ex1="An example 123-45-6789"
ex2="123.45.6789 some more things"
ex3="123456789 thank you Ruby may I have another"

都应该进入返回“123-45-6789”的方法 基本上,除数字或字母外的任何内容(包括任何内容)都应返回 XXX-XX-XXXX 格式的 SSN。 stumping 的部分是正则表达式识别不能有任何东西的方式。

到目前为止,我在识别我的 ssn 方面有什么:

def format_ssns(string)
string.scan(/\d{3}[^0-9a-zA-Z]{1}\d{2}[^0-9a-zA-Z]{1}\d{4}/).to_a
end

它似乎对我期望的一切都有效,除了什么都没有的时候。 “123456789”不起作用。在这种情况下,我可以使用正则表达式来识别缺少什么吗?

最佳答案

这已经在评论中分享过,但只是为了提供一个完整的答案......

您可以使用这些工具:

  • x 匹配 x 恰好一次
  • x{a,b}ab 之间匹配 x
  • x{a,} 匹配 x 至少 a
  • x{,b} 匹配 x 最多(最多)b
  • x* 匹配 x 零次或多次(与 x{0,} 相同)
  • x+ 匹配 x 一次或多次(与 x{1,} 相同)
  • x? 匹配 x 零次或一次(与 x{0,1} 相同)

所以你想使用最后一个,因为它正是你要找的东西(零次或一次)。

/\d{3}[^0-9a-zA-Z]?\d{2}[^0-9a-zA-Z]?\d{4}/

关于ruby - 如何使用正则表达式匹配字符或不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079645/

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