gpt4 book ai didi

regex - .* 没有正确捕获逗号

转载 作者:太空宇宙 更新时间:2023-11-03 16:12:52 37 4
gpt4 key购买 nike

我的正则表达式不能正确处理一行中的逗号。

if line =~ /^.*,(\d{4}-\d{2}-\d{2}),(\d+:\d+),.*,(\d+),.*,(.*) && (.*),Other,Other.*$/

我正在逐行读取一个文件,应该如下所示:

"",2019-06-14,01:30,,27,"",Episode Name && Series Name,Other,Other,LOCAL

但是,如果系列名称中有逗号,例如。 “Busy Electron, The”,正则表达式只会捕获“The”而不是整个名称。

最佳答案

这可能是我们在这里寻找的表达式,但不是正确的方法:

"(.*?)",([0-9]{4}-[0-9]{2}-[0-9]{2})\s*,([0-9]{2}:[0-9]{2}),(.*?),([0-9]+),"(.*?)",(.*?),(.*?),(.*?),(.*)

除了最后一个字段,我们只是为那些我们不会验证的字段实现一个惰性量词 (.*?)

(.*)? 不起作用,因为它会使整个捕获组懒惰而不是 .*

之前,它会到达 ?.* 已经将我们的字符串扫到末尾,并收集了除换行符之外的所有字符。

如果我们希望增加或减少约束,我们可以这样做,例如:

"(.*?)",\s*([0-9]{4}-[0-9]{2}-[0-9]{2})\s*,\s*([0-9]{2}:[0-9]{2})\s*,(.*?),\s*([0-9]+)\s*,"(.*?)",(.*?),(.*?),(.*?),(.*)

测试

re = /"(.*?)",([0-9]{4}-[0-9]{2}-[0-9]{2})\s*,([0-9]{2}:[0-9]{2}),(.*?),([0-9]+),"(.*?)",(.*?),(.*?),(.*?),(.*)/m
str = '"",2019-06-14,01:30,,27,"",Episode Name && Series Name,Other,Other,LOCAL

"some things we wish here",2019-06-14,01:30,some things we wish here,27,"some things we wish here",Episode Name && Series Name,Other,Other,LOCAL'

# Print the match result
str.scan(re) do |match|
puts match.to_s
end

Demo

正则表达式电路

jex.im可视化正则表达式:

enter image description here

关于regex - .* 没有正确捕获逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56676537/

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