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

조회수 2122회

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/ 사이트를 추천합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)