How can I fix this regex expression?

前端 未结 3 1895
萌比男神i
萌比男神i 2021-01-28 19:12

Preface: This question is a derivative of this question.


Here is my code:

using System;
using System.Linq;
using System.Text.RegularExpressions;

c         


        
3条回答
  •  余生分开走
    2021-01-28 19:50

    Good comments through-out the thread (I would strongly suggest pursuing one of those options), I wont focus on them. Here's an alternative solution that uses Matches from the Regex pattern, skip how many fields you have (columns) and then take how many records you want.

    I'm using a pattern like (\"(.*?)[^,]") and explanation can be found here of what it means.

    const string rawLine = "\"TeamName\",\"PlayerName\",\"Position\"  \"Chargers\",\"Philip Rivers\",\"QB\"  \"Colts\",\"Peyton Manning\",\"QB\"  \"Patriots\",\"Tom Brady\",\"QB\"";                       
    var matches = new Regex(@"(\""(.*?)[^,]"")").Matches(rawLine).Cast().ToList();
    // loop through our matches
    for(int i = 0; i < matches.Count; i++)
    {                
        // join our records we need to output
        string str = string.Join(",", matches.Skip(i * 3).Take(3));
        if(!string.IsNullOrEmpty(str))
             Console.WriteLine(str);
    }            
    Console.WriteLine("Press [ENTER] to exit.");
    Console.ReadLine();
    

    Please note, there's no error checking at all, can be improved, but does produces the output you need. *Also make sure you import System.Linq if not already there.

    Output Test

提交回复
热议问题