c# Regex.Replace로 숫자로 시작하지않는 문자 제거

c# Regex.Replace를 사용하는데 처음이라 잘 모르겠어요.

예를들어 a = ",123 asdf,456 ghjk,zxcv라는것이 있으면, Replace로 a = ",123 asdf,456 ghjk"만 남기려고 하는데 식을 어떻게 세워야할지 모르겠네요.

1답변

  • regex 패턴을 숫자있음 + 단어있음 + 콤마있음 으로 만드시면 되겠네요. 저는 매칭되는 단어를 출력하는 코드를 짜보았어요.

    패턴은 \d+.*?(?=,) 이고, 여기 들어간 regex는 lazy quantifier인 *?와 positive lookahead가 있습니다.

    \d+숫자 있음에 해당하고요 .*?단어 있음에 해당합니다. ( lazy quantifier 사용) (?=,)는 콤마 있음에 해당합니다. ( positive lookahead 사용)

    using System.Text.RegularExpressions;
    
    public class Hello1 {
        public static void Main() {
           string input = ",123 asdf,456 ghjk,zxcv";
           Regex regex = new Regex(@"\d+.*?(?=,)");
           Match m = regex.Match(input);
           while (m.Success)
           {
             System. Console.WriteLine("{0}:{1}", m.Index, m.Value);
             m = m.NextMatch();
         }
     }
    }
    

    영어 해석을 어느정도 할 줄 아신다면, Regex 사용에는 https://regex101.com/ 사이트를 추천합니다.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.