정규표현식 질문이요~

  • Post author:
  • Post category:
  • Post comments:9 Comments
  • Post last modified:September 1, 2008

정규식을 언제 마음잡고 익히던가 해야지, 매번 고생입니다. 일단 정규식 대신 무식한 방법을 동원해서 일을 끝내놨는데 애 좀 먹고 나니까 기분이 언짢네요. 혹시 다음과 같은 경우를 어떻게 처리하는지 알고 계시면 내공 좀 전달해주세요.

string pattern = "1234*5678"
string text = "1234테스트5678"
string result = Parse(pattern, text);

Assert.Equal(result, "테스트");

Parse 함수를 정규식으로 짜고 싶습니다.

This Post Has 9 Comments

  1. 이정민

    string result = Regex.Match(text, “[^0-9]+”).ToString();

  2. 스팟

    별 도움은 안되시겠지만..
    ——————————————————-
    c#
    ——————————————————-
    string pattern = @“1234(.*?)5678”;
            string text = “1234테스트5678”;

            Regex regex1 = new Regex(pattern, RegexOptions.IgnoreCase);
            MatchCollection matches1 = regex1.Matches(text);
           
            foreach (Match match in matches1)
            {
              System.Console.WriteLine( match.ToString() );
              GroupCollection groups = match.Groups;
              System.Console.WriteLine(groups[1].Value);
            }
    ——————————————————-

  3. 최재훈

    음… 제가 적은 코드 중에 Parse(text)를 Parse(pattern, text)로 바꿔야하네요. 아무래도 이 부분 때문에 헷갈리는 분들이 많겠네요.

  4. 최재훈

    스팟님이 적어주신 코드가 제대로 작동하네요. 음… 비슷하게 짰었는데 약간 틀렸군요. 역시 뭘 알려면 똑바로 알아야……

    모두 도와주셔서 감사합니다.

  5. 홍민희

    단순히 정규식은 아니고, 정규식 전처리가 필요할 것 같습니다.

      string Parse(string pattern, string text) {
          return Regex.Match(
            text,
            pattern.Replace(”*”, “(.*?)”)
          ).ToString();
      }

    사실 제가 CLR에서 정규식을 써본 적이 없어서, 저 문법이 제대로 작동할지는 모르겠네요;

  6. 최재훈

    맞는 코드 같습니다. 안 그래도 이런 식으로 코드를 바꿔놨습니다. ^^

  7. 방준영

    1234와 5678 사이의 문자열만 추출하는 것이 목적인가요? 그렇다면 한줄로 간단히:

    Console.WriteLine(Regex.Match(“1234테스트5678”, @”(?

    <=1234).*(?=5678)"));

    결과는 아래처럼 됩니다:
    “1234테스트5678” =>

    “테스트”
    “123412345678” => “1234”
    “123456785678” => “5678”

  8. 최재훈

    1234와 5678은 단순히 테스트 예제입니다. ^^

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.