정규 표현식 예시

Bogoomi·2023년 7월 26일
0

정규 표현식 사용 예시들

이메일 구분 코드

regex re("[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}"); // 이게 숫자인지 판별하겠다는 의미
	string str;

	while (true)
	{
		getline(cin, str);
		if (std::regex_match(str, re)) // std::regex_match를 통해 판별
			cout << "Match" << endl;
		else
			cout << "No match" << endl;

		{
			auto begin = std::sregex_iterator(str.begin(), str.end(), re);
			auto end = std::sregex_iterator();
			for (auto itr = begin; itr != end; ++itr)
			{
				std::smatch match = *itr;
				cout << match.str() << " ";
			}
			cout << endl;
		}
		cout << endl;
	}

전화번호 ('-' 사용한 전화번호)

regex re("^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$");

숫자만 가능 : [ 0 ~ 9 ] 주의 : 띄어쓰기 불가능

^[0-9]+$

영문만 가능

^[a-zA-Z]+$

^x // '^'은 문자열의 시작을 표현하며, x문자로 시작됨을 의미(그 행의 첫 문자부터 시작을 의미..)

x$ // '$'은 문자열의 종료를 표현하며, x문자로 종료됨을 의미

.x // '.'은 개행문자 \n을 제외한 다른 모든 문자를 의미

x+ // '+'은 1회 이상 반복을 의미, x문자가 1번 이상 반복됨을 의미 ({1,}과 동일)

x // ''은 0회 이상 반복을 의미, x문자가 0번 이상 반복됨을 의미 ({0,}과 동일)

x? // '?'은 0 or 1개 문자 매칭 의미, x문자가 존재할 수도 있고 안할수도 있다는 의미 ({0,1}과 동일)

x|y // '|'은 or를 표현, x 또는 y가 나온다는 의미

(x) // '()'은 그룹을 표현, 괄호로 묶인 패턴을 의미 ((abc){3}와 같이 사용해서 abcabcabc를 검출하는데 쓰임)

x{n} // '{}'은 반복을 의미, x가 n번 반복됨을 의미

x{n,} // '{,}'은 반복을 의미, x가 n번 이상 반복됨을 의미

x{n,m} // '{}'은 반복을 의미, x가 n번 이상 m번 이하로 반복됨을 의미

[xy] // '[]'은 x또는 y를 찾는다는 의미, [a-z0-9]이면 알파벳 소문자 또는 숫자를 찾는다는 의미

[^xy] // '[^]'은 not을 의미, x 및 y 를 제외하고 찾는다는 의미

[a-z] // '[-]'은 a ~ z 를 찾는다는 의미

\d // '\d'은 digit으로 숫자를 의미

\D // '\D'은 not digit으로 숫자를 제외하고 나머지 다른 문자를 의미

\s // '\s'은 space로 공백문자를 의미

\S // '\S'은 not space로 공백문자를 제외한 나머지 다른 문자를 의미

\t // '\t'은 tap을 의미

\w // '\w'은 알파벳 대문자,소문자와 숫자를 의미, [A-Za-z0-9]을 의미

\W // '\W'은 not \w, 즉 \w를 제외한 특수문자를 의미

profile
개에에에바알

1개의 댓글

comment-user-thumbnail
2023년 7월 26일

좋은 글 감사합니다. 자주 올게요 :)

답글 달기