gpt4 book ai didi

regex - 提取 ruby 中单引号之间的日期

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

我有这样一个字符串:

ticket:1 priority:5 delay:'2019-08-31 02:53:27.720422' delay:'2019-08-30 00:04:10.681242'

我成功提取了 ticketpriority 但在 delay 上失败了。

我想要的是将延迟提取为数组,因此输出将如下所示:

#delays =>
[
"delay:'2019-08-31 02:53:27.720422'",
"delay:'2019-08-30 00:04:10.681242'"
]

到目前为止我尝试了什么?

str = "ticket:1 priority:5 delay:'2019-08-31 02:53:27.720422' delay:'2019-08-30 00:04:10.681242'"
delays = str.scan(/delay:\w+(?:'\w+)*/).flatten

在我的情况下如何提取它们?请注意,不能保证日期格式与示例中的一样。日期格式可以是任何格式。所以我们应该关注单引号之间的字符串。


如果可能的结果可以是这样的(这样我就不必再次提取日期。):

#delays =>
[
"2019-08-31 02:53:27.720422",
"2019-08-30 00:04:10.681242"
]

最佳答案

这个表达式可能与您的想法很接近:

\bdelay\s*:\s*['][^']*[']

如果您有其他字符,例如 " 用于 delay 值,它将进入 char 类:

\bdelay\s*:\s*['"][^'"]*['"]

或者:

\bdelay\s*:\s*'(\d{4}-\d{1,2}-\d{1,2})\s*([^']*)'

Demo 2

或:

\bdelay\s*:\s*'(\d{4}-\d{1,2}-\d{1,2}\s*[^']*)'

Demo 3

或更简化:

\bdelay\s*:\s*'([^']*)'

测试

re = /\bdelay\s*:\s*'([^']*)'/
str = 'ticket:1 priority:5 delay:\'2019-08-31 02:53:27.720422\' delay:\'2019-08-30 00:04:10.681242\''

str.scan(re) do |match|
puts match.to_s
end

输出

["2019-08-31 02:53:27.720422"]
["2019-08-30 00:04:10.681242"]

If you wish to explore/simplify/modify the expression, it's been explained on the top right panel of regex101.com. If you'd like, you can also watch in this link, how it would match against some sample inputs.


关于regex - 提取 ruby 中单引号之间的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57734941/

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