우리는 다음과 같은 패턴을 가지고가는 경우 : @ 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;
}
}
}
대단히 감사합니다! 나는 Notepad ++에서 이것을 시도했는데 (정규 표현식의 한계로 알려짐), 그것은 작동하지 않았다. 내일 CLR SPROC에 던져서 사용해 보겠습니다. .NET Regex Library에 대한 알려진 제한 사항이 있습니까? – Wjdavis5
내가 아는 것은 아닙니다. 나는이 연산자를 정기적으로 사용한다. 또한 http://regexpal.com/을 사용하여 테스트하고, 일반적으로 .NET에서 작동합니다. – Syddraf