IT

Guid에 대한 C # 정규식

lottoking 2020. 8. 3. 17:27
반응형

Guid에 대한 C # 정규식


쿠폰을 구문 분석하고 각 Guid 값 주위에 작은 따옴표를 추가합니다. 정규식을 사용하여 수행 할 생각이 정확히 정규식 전문가는 아닙니다.

Guid를 만나는 데 사용할 수있는 좋은 정규식이 있습니까?

두 번째 질문은 내가 사용할 수있는 가정하고 유효한 정규 존재를 Regex.Replace(String, String, MatchEvaluator)찾았지만 구문을 잘 모르겠습니다. 아마도 다음과 가변적이다

return Regex.Replace(stringToFindMatch, GuidRegex, match =>
{
    return string.Format("'{0}'", match.Groups[0].ToString());
});

구문 분석하려는하려는은 다음과 가변합니다.

"Password1_46_0_으로 passwordco0_.PASSWORD_CONFIG_ID를 선택하고 PASSWORD_CONFIG에서 passwordco0_을 선택하십시오. passwordco0_ WHERE


이것은 대리인이 필요하지 않습니다.

resultString = Regex.Replace(subjectString, 
     @"(?im)^[{(]?[0-9A-F]{8}[-]?(?:[0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$", 
     "'$0'");

이것은 다음 스타일과 일치하며 GUID에 대해 모두 동등하고 수용 가능한 형식입니다.

ca761232ed4211cebacd00aa0057b223
CA761232-ED42-11CE-BACD-00AA0057B223
{CA761232-ED42-11CE-BACD-00AA0057B223}
(CA761232-ED42-11CE-BACD-00AA0057B223)

업데이트 1

@NonStatic은 위의 정규 배열이 존재하는 구분 기호가있는 오 발견과 일치하는 구분 기호가 있습니다.

이것은 일반적으로 지원되는 정규식 조건에 의해 피할 수 있습니다.

JGsoft 엔진, Perl, PCRE, Python 및 .NET 프레임 워크에서 조건을 지원합니다. 루비는 2.0 버전부터 지원합니다. PCRE 기반의 정규식 기능이있는 Delphi, PHP 및 R과 같은 언어도 조건을 지원합니다. (출처 http://www.regular-expressions.info/conditional.html )

다음에 나오는 정규식은

{123}
(123)
123

그리고 일치하지

{123)
(123}
{123
(123
123}
123)

정규식 :

^({)?(\()?\d+(?(1)})(?(2)\))$

필요한 경우 필요한 것을 명확하게 표시하기 위해 숫자 만 일치하도록 솔루션이 단순화되었습니다.


가장 기본적인 정규식은 다음과 가변적입니다.

(^([0-9A-Fa-f]{8}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{12})$) 

또는 여기에 넣을 수 있습니다 .

이것이 시간을 절약하기를 바랍니다.


http://regexhero.net/tester/를 사용하여 C # 코드를 쉽게 자동 생성 할 수 있습니다 .

무료입니다.

내가 한 방법은 다음과 가변적이다.

여기에 이미지 설명을 입력하십시오

그런 다음 웹 사이트는 .NET 코드를 자동으로 생성합니다.

string strRegex = @"\b[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12}\b";
Regex myRegex = new Regex(strRegex, RegexOptions.None);
string strTargetString = @"     {CD73FAD2-E226-4715-B6FA-14EDF0764162}.Debug|x64.ActiveCfg =         Debug|x64";
string strReplace = @"""$0""";

return myRegex.Replace(strTargetString, strReplace);

C # .Net이 주어진 텍스트에서 GUID를 찾아서 바꾸려면,

이 정규식을 사용하십시오.

[({]?[a-fA-F0-9]{8}[-]?([a-fA-F0-9]{4}[-]?){3}[a-fA-F0-9]{12}[})]?

예제 C # 코드 :

var result = Regex.Replace(
      source, 
      @"[({]?[a-fA-F0-9]{8}[-]?([a-fA-F0-9]{4}[-]?){3}[a-fA-F0-9]{12}[})]?", 
      @"${ __UUID}", 
      RegexOptions.IgnoreCase
);

확실히 작동합니다! 또한 GUID에 대해 동일하고 수용 가능한 형식 인 다음 스타일을 일치 및 대체합니다.

"aa761232bd4211cfaacd00aa0057b243" 
"AA761232-BD42-11CF-AACD-00AA0057B243" 
"{AA761232-BD42-11CF-AACD-00AA0057B243}" 
"(AA761232-BD42-11CF-AACD-00AA0057B243)" 

.NET Framework 4에는 System.Guid 구조가 포함되며 GUID를 구문 분석하는 새로운 TryParse 및 TryParseExact 메서드가 포함됩니다. 이에 대한 예는 다음과 가변합니다.

    //Generate New GUID
    Guid objGuid = Guid.NewGuid();
    //Take invalid guid format
    string strGUID = "aaa-a-a-a-a";

    Guid newGuid;

    if (Guid.TryParse(objGuid.ToString(), out newGuid) == true)
    {
        Response.Write(string.Format("<br/>{0} is Valid GUID.", objGuid.ToString()));
    }
    else
    {
        Response.Write(string.Format("<br/>{0} is InValid GUID.", objGuid.ToString()));
    }


    Guid newTmpGuid;

    if (Guid.TryParse(strGUID, out newTmpGuid) == true)
    {
        Response.Write(string.Format("<br/>{0} is Valid GUID.", strGUID));
    }
    else
    {
        Response.Write(string.Format("<br/>{0} is InValid GUID.", strGUID));
    }

이 예에서는 새 guid 객체를 만들고 잘못된 guid가있는 하나의 호스트 변수를 사용합니다. 그런 다음 TryParse 메서드를 사용하여 두 변수 모두 유효한 guid 형식인지 확인합니다. 예제를 실행하면 인증서 변수에 유효한 guid 형식이없고 "InValid guid"가 표시됩니다. 유효한 변수에 유효한 Guid가 TryParse 메소드에서 true를 반환합니다.


더 쉬운 정규식 패턴을 사용합니다.

^[0-9A-Fa-f\-]{36}$

참고 URL : https://stackoverflow.com/questions/11040707/c-sharp-regex-for-guid

반응형