Use capturas de correspondência nomeadas (para obter dados, use mtch.Groups["Value"].Value... etc) para extrair as informações conforme necessário.
(?<Value>\d+) -- Get the digits
(?<Other>.+?) -- Capture all text, but minimal (greedy) capture
(?<Key>someword) -- til the keyword here.
Quando o acima é executado ( com a IgnorePatternWhiteSpaceremoção dos comentários, junte-se ao padrão para executá-lo, como (?<Value>\d+)(?<Other>.+?)(?<Key>someword)sem opções de regex ), ele obtém os dados para cada par de Dados / Chave e organiza cada um em uma única correspondência.
Resultado
Aqui está o resultado (para o seu segundo exemplo), que está contido em correspondências individuais e seus grupos e capturas fornecem em cada correspondência:
Match #0
[0]: 43434˽of˽someword
["Value"] → [1]: 43434
→1 Captures: 43434
["Other"] → [2]: ˽of˽
→2 Captures: ˽of˽
["Key"] → [3]: someword
→3 Captures: someword
Match #1
[0]: 12˽anything˽someword
["Value"] → [1]: 12
→1 Captures: 12
["Other"] → [2]: ˽anything˽
→2 Captures: ˽anything˽
["Key"] → [3]: someword
→3 Captures: someword
Match #2
[0]: 2323˽new˽someword
["Value"] → [1]: 2323
→1 Captures: 2323
["Other"] → [2]: ˽new˽
→2 Captures: ˽new˽
["Key"] → [3]: someword
→3 Captures: someword
Visualmente, aqui está o que corresponde:
