2013-03-07 2 views
4

우리는 다음과 같은 패턴을 가지고가는 경우 : @ 70000 * 및 970000 @ * 문자열 [email protected] :... 5060 이 70000에 일치하는 항목을 반환 @ *.NET 정규식 전체 문자열 일치

I을 그것이 왜 일치하는지 이해하지만 정규식을 수정하여 전체 문자열 일치 만 수행해야합니다.

아이디어가 있으십니까?

감사합니다. 나는 닷넷 3.5 라이브러리 여기

을 사용하고

코드입니다 :

[Microsoft.SqlServer.Server.SqlProcedure] 
    public static void RouteRegex(string phoneNumber, out string value) 
    { 
     if (string.IsNullOrEmpty(phoneNumber)) 
     { 
      value = string.Empty; 
      return; 
     } 
     const string strCommand = 
      "Select RouteID,sequence,Pattern From SIPProxyConfiguration.dbo.Routes order by routeid, sequence asc"; 
     using (var connection = new SqlConnection("context connection=true")) 
     { 
      try 
      { 
       connection.Open(); 
       using (var command =new SqlCommand(strCommand,connection)) 
       { 
        using (var reader = command.ExecuteReader()) 
        { 
         while (reader.Read()) 
         { 
          var regEx = reader[2] as string; 
          if (string.IsNullOrEmpty(regEx)) continue; 
          var routeId = reader[0]; 
          var sequence = reader[1]; 
          var match = Regex.Match(phoneNumber, regEx); 
          Regex.IsMatch() 
          if (!match.Success) continue; 
          value = routeId.ToString(); 
          return; 
         } 
        } 

       } 
       value = "No Match!"; 
      } 
      catch (Exception ex) 
      { 
       value = ex.Message; 
       return; 
      } 
     } 

    } 

답변

6

시작과 끝 매칭을 강제로 정규식에

^$ 

연산자를 사용해보십시오.

+0

대단히 감사합니다! 나는 Notepad ++에서 이것을 시도했는데 (정규 표현식의 한계로 알려짐), 그것은 작동하지 않았다. 내일 CLR SPROC에 던져서 사용해 보겠습니다. .NET Regex Library에 대한 알려진 제한 사항이 있습니까? – Wjdavis5

+0

내가 아는 것은 아닙니다. 나는이 연산자를 정기적으로 사용한다. 또한 http://regexpal.com/을 사용하여 테스트하고, 일반적으로 .NET에서 작동합니다. – Syddraf