gpt4 book ai didi

ruby 正则表达式.scan

转载 作者:数据小太阳 更新时间:2023-10-29 07:09:58 24 4
gpt4 key购买 nike

我正在使用 Ruby 的 scan() 方法来查找特定格式的文本。然后我将其输出为以逗号分隔的字符串。我要查找的文本如下所示:

AB_ABCD_123456

这是我到目前为止为找到上述内容而想出的方法。它工作正常:

text.scan(/.._...._[0-9][0-9][0-9][0-9][0-9][0-9]/)
puts text.uniq.sort.join(', ')

现在我需要一个正则表达式来查找上面带有或不带有两个字母的国家/地区名称的末尾。例如,我希望能够找到以下所有三个:

AB_ABCD_123456
AB_ABCD_123456UK
AB_ABCD_123456DE

我知道我可以使用两个或三个不同的扫描来获得我的结果,但我想知道是否有一种方法可以用一个正则表达式获得所有三个。

最佳答案

/.._...._[0-9][0-9][0-9][0-9][0-9][0-9](?:[A-Z][A-Z])?/

您还可以使用 {} 缩短正则表达式:

/.{2}_.{4}_[0-9]{6}(?:[A-Z]{2})?/

说明:? 使前面的模式可选。 () 将表达式组合在一起(因此 ruby​​ 知道 ? 适用于这两个字母)。 ?: 开头的 ( 使组成为非捕获组(捕获组会改变扫描产生的值)。

关于 ruby 正则表达式.scan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1235785/

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