Decodificação EAN128 ou GS1-128 c #

Aqui está a amostra do EAN128 ou o novo nome GS1-128 código de barras

01088888931021461712031510W1040190

Quero decodificá-lo para ais

(01) 08888893102146
(17) 120315
(10) W1040190

Mas o código de barras pode ser alterado assim

1712031510W1040190
(17) 120315
(10) W1040190

existe alguma maneira possível de resolvê-lo com regex ou qual é a melhor maneira

Agora estou tentando isso

public String AICodes(String pAI)
    {
        switch (pAI)
        {
            case "01":
                return "01\\d{14}";
            case "17":
                return "17\\d{6}";
            case "10":
                return "17\\d{6}10[a-zA-Z0-9|]{1,20}";
        }
        return String.Empty;
    }

private void GS1DataConvert(string pBarcode, string pBarfnc)
    {
       Match match = Regex.Match(pBarcode, AICodes(pBarfnc));
        if (match.Success)
        {
            MessageBox.Show(match.Groups[0].Value);
        }
    }

string barfnc = "01";

GS1DataConvert(barcode, barfnc);
barfnc = "17";
GS1DataConvert(barcode, barfnc);
barfnc = "10";
GS1DataConvert(barcode, barfnc);

questionAnswers(8)

yourAnswerToTheQuestion