Estou tentando criar uma expressão regular em Rust para um arquivo de log contendo strings como a seguinte:
[2025-01-01T08:17:29.791951550Z INFO] Values: [(311154184, Some(389971313710868251)), (311154187, Some(389967898428572732)), (311154182, Some(389971313710868251)), (311154174, Some(389971313710868251)), (311154178, Some(389971313710868251)), (311154197, Some(389811146843151022)), (311154171, Some(389971313710868251)), (311154167, Some(389971313710868251)), (311154185, Some(389967898428572732)), (311154168, Some(389971313710868251)), (311154191, Some(389967898428572732)), (311154196, Some(389811259875653181)), (311154199, Some(0)), (311154192, Some(389967898428572732)), (311154172, Some(389971313710868251)), (311154181, Some(389971313710868251)), (311154177, Some(389971313710868251)), (311154176, Some(389971313710868251)), (311154179, Some(389971313710868251)), (311154183, Some(389971313710868251)), (311154186, Some(389967898428572732)), (311154175, Some(389971313710868251)), (311154173, Some(389971313710868251)), (311154180, Some(389971313710868251)), (311154190, Some(389967898428572732)), (311154170, Some(389971313710868251)), (311154165, None), (311154189, Some(389967898428572732)), (311154169, Some(389971313710868251)), (311154166, None), (311154195, Some(389967898428572732)), (311154198, Some(287087126717485928)), (311154193, Some(389967898428572732)), (311154188, Some(389967898428572732)), (311154194, Some(389967898428572732))]
Os "Valores" neste caso são tuplas de um u64 e uma Opção(u64), então alguns aparecem como: (311154170, Alguns(389971313710868251)) e alguns aparecem como: (311154165, Nenhum).
Gostaria de capturar todos eles e terminar com um Vec de tuplas como o acima, mas não consigo acertar o regex. Tentei algumas iterações, incluindo esta:
((\((\d+), (Some\((\d+)\)\)|None\)), )+)
mas parece estar faltando itens ou capturando tudo e selecionando tuplas apenas, mas não outras. Agradeço qualquer ajuda.