정규식(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 정규식 : [링크]
★☆☆☆☆
반응형
'개발 > 코드' 카테고리의 다른 글
Unity)코드) Camera View 안에 있는 Object 구분하기 (0) | 2021.05.11 |
---|---|
코드) Switch Value 조건 범위 설정 (0) | 2021.03.16 |
Unity)앱 종료 처리 코드 (0) | 2021.02.25 |
코드)Linq - list 특정조건 비교 / list 와 list의 중복/ list 와 list 합집합 (2) | 2021.01.13 |
Unity)List Shuffle(리스트 랜덤으로 순서 변경) (0) | 2020.12.15 |
댓글