본문 바로가기
개발/코드

코드)정규식(Regex) 예제

by 테샤르 2021. 3. 12.

정규식(Regex) 예제

정규식은 텍스트를 처리하는 강력하고 유연하며 효율적인 방법을 제공합니다. 정규식의 광범위한 패턴 일치 표기법을 사용하면 많은 양의 텍스트를 빠르게 구문 분석하여 다음을 할 수 있습니다.

 

 

  • 특정 문자 패턴을 찾습니다.
  • 텍스트의 유효성을 검사하여 미리 정의된 패턴(예: 전자 메일 주소)과 일치하는지 확인합니다.
  • 텍스트 하위 문자열을 추출, 편집, 바꾸기 또는 삭제합니다.
  • 보고서를 생성하기 위해 추출된 문자열을 컬렉션에 추가합니다.

using System.Text.RegularExpressions.Regex를 선언한다.

Dictionary<string,string> info = new Dictionary<string, string>{
        {"achievement_1_win", "key_1"},
        {"achievement_10_win", "key_2"},
        {"achievement_15_win", "key_3"},
        {"achievement_win_with_2000_points", "key_4"},
        {"achievement_win_level_1_complete", "key_5"},
        {"achievement_win_level_10_complete", "key_6"},
        {"achievement_win_level_100_complete", "key_7"},
        {"achievement_collect_1_million", "key_8"},
        {"achievement_collect_100_million", "key_9"},
        {"achievement_collect_1_billion", "key_10"},
        {"achievement_collect_1_trillion", "key_10"},
    };
    
 string [] matchKeyList= {
            @"\d_win$",
            @"\d_points$",
            @"\d_million$|\d_billion$|\d_trillion$",
        };

        for(int i =0;i< matchKeyList.Length;i++){
            string matchKey = matchKeyList[i];
            var result = info.Keys.Where(x=> new Regex(matchKey).IsMatch(x));
            var enumerator = result.GetEnumerator();

            Debug.Log($"Regex Key : {matchKey}------------START");
            while(enumerator.MoveNext()){
                string key = enumerator.Current;
                string condition = Regex.Replace(key, @"\D","");

                long value = 0;
                long.TryParse(condition, out value);
                if(true == key.Contains("million")){
                    value *=(int)Mathf.Pow(10,6);
                }
                else if(true == key.Contains("billion")){
                    value *=(int)Mathf.Pow(10,9);
                }
                else if(true == key.Contains("trillion")){
                    value *=(int)Mathf.Pow(10,12);
                }
                
                Debug.Log($"Key :{key} :: {condition}  value :{Utill.Instance.GetComma(value)}");
            }
            Debug.Log($"Regex Key : {matchKey}------------END");
        }

 

\d 숫자를 찾습니다.
\D 숫자가 아닌 값을 찾는다.
[0-9]{0,3} 0-9를 0~3개를 찾는다.
\w 알파벳 + 숫자+ _ 를 찾는다.
_win$ _win이 끝문자를 찾는다.
[xy] x,y중 하나를 찾는다.
/^[ㄱ-ㅎ가-힣]+$/ 한글만 포함된것을 찾는다.
\.[0-9] 소수점이 있는 항목을 찾는다.

 

자주 쓰는 정규식은 다음과 같다.

비밀번호(특수문자 / 문자 / 숫자 포함 형태의 8~15자리 이내의 암호 정규식) /^.*(?=^.{8,15}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$/;
이메일 /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i
핸드폰 /^\d{3}-\d{3,4}-\d{4}$/

Microsoft 정규식 : [링크]

 

.NET 정규식

.NET에서 정규식을 사용하여 특정 문자 패턴을 찾고, 텍스트의 유효성을 검사하고, 텍스트 부분 문자열로 작업하고, 추출된 문자열을 컬렉션에 추가합니다.

docs.microsoft.com

 

★☆

 

반응형

댓글