https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • LIS
  • 최대공약수
  • 그래프
  • 다이나믹 프로그래밍
  • 다익스트라
  • 다이나믹프로그래밍
  • python3
  • 최단경로
  • MST
  • 최소힙
  • 재귀함수
  • 프로그래머스
  • 유클리드호제법
  • 백준
  • 이분 탐색
  • 그리디
  • 파이썬
  • 백트래킹
  • 스택
  • Python
  • 12015
  • 큐
  • DP
  • BFS
  • DFS
  • 재귀
  • heapq
  • 이분탐색
  • counter
  • 유니온 파인드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

정규표현식
삽질방지

정규표현식

2021. 9. 2. 11:08

* 단어 찾기

단어를 찾으려면 그냥 단어를 입력하면 끝이다.

* 해당 단어 제외하고 모두 찾기

\b(?!\bto\b)\w+\b

\b word boundary를 표현하며 문자와 공백 사이의 문자를 의미

?! 거짓인 것을 찾는다.

\bto\b word boundary 안에 존재하는 to를 의미

\w+ \w는 [0-9a-zA-Z]를 의미하며 +는 1번이상 반복을 의미

\b 다시 word boundary를 의미

⇒ \b의 word boundary는 단어의 시작이나 끝을 의미한다. 여기서 재밌는 점은 경계를 가리킨다는 점이다. 따라서 단어의 끝,시작의 경계에 \b가 매칭된다.


* 전화번호

전화번호는 XX(X)-XXX(X)-XXXX 로 구성된다. 따라서 숫자와 -를 잘 구성하면 된다.

^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$

^ 는 정규표현식의 처음을 의미

[0-9]{2,3} 는 0~9까지를 의미하고 2개나 3개를 의미

- 는 전화번호의 특수기호 -를 의미

[0-9]{3,4} 는 0~9까지를 허용하며 3개나 4개를 의미

[0-9]{4}$ 는 0~9까지를 허용하며 4개를 의미, 그리고 $는 문자의 끝을 의미


* 휴대폰 번호

휴대폰 번호는 0XX-XXX(X)-XXXX 로 구성된다. 따라서 전화번호와 비슷한 구조를 가진다. 혹인 하이픈 없이 XXXXXXXXX이런 구성도 가능하다 가정한다.

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

^ 는 정규표현식의 처음을 의미

01 은 숫자 자체를 의미

([0|1|6|7|8|9]?) 은 0,1,6,7,8,9가 올수 있으며 ?은 존재여부를 나타내므로 있거나 없거나를 의미

-? 은 -이 존재할수도 있고 없을수도 있다고 판단

([0-9]{3,4}) 숫자가 3자리에서 4자리 가능

([0-9]{4})$ 숫자가 4자리 가능하고 문자열 끝 의미


* 이메일

이메일은 XXX(-._\XX)@XXX.XX(X).XX(X) 로 대략 구성된다. 앞은

^[0-9a-zA-Z]*([-_.\\]?[0-9a-zA-Z])*@[0-9a-zA-Z]*([-_.\\]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$

^[0-9a-zA-Z]* ^은 시작을 의미하고 0~9,a-z,A-Z까지의 문자 전부 의미. *은 0번이거나 그 이상 반 복 가능

([-_.\\]?[0-9a-zA-Z])* - _ . \이 가능하며 ?은 존재 여부 의미. 즉 앞의 특수 문자가 존재하거나 없거나 의미함. 그리고 0~9,a~z,A~Z 를 의미한다. 마지막으로 이러한 단위가 *로 0번이거나 반복 가능. (\ 이 아닌 \은 특수한 기능을 제거하고 문자 자체로 인식하게 하기 위함.)

@ 그냥 '@' 문자 한 개 의미

\.[a-zA-Z]{2,3}$ . 은 어떤 값이든 의미하는 dot특수문자이므로 \를 붙여서 단순 문자로 바꿔준다. 그리고 다음은 a~z,A~Z까지 2~3개 의미. $은 문자열 종료를 의미

래퍼런스

https://hamait.tistory.com/342 (자세한 설명)

https://regexr.com/ (정규표현식을 테스트해볼 수 있는 사이트)

저작자표시 (새창열림)

'삽질방지' 카테고리의 다른 글

[python3] binary string to integer, integer to binary string  (0) 2022.02.17
파이썬 재귀 제한 풀기  (0) 2022.02.16
[c++] ios::sync_with_stdio(0), cin.tie(0) 는 왜 쓰는 걸까?  (0) 2021.07.19
[c++] \n 와 endl 중에는 \n가 더 빠르다.  (0) 2021.07.19
python3 루트 씌우기, 제곱근, 세제곱근 사용하기 ( sqrt(n) )  (0) 2021.02.07
    '삽질방지' 카테고리의 다른 글
    • [python3] binary string to integer, integer to binary string
    • 파이썬 재귀 제한 풀기
    • [c++] ios::sync_with_stdio(0), cin.tie(0) 는 왜 쓰는 걸까?
    • [c++] \n 와 endl 중에는 \n가 더 빠르다.
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바