일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- request
- DP
- 프림 알고리즘
- mst
- 정렬
- jsp
- programmers
- 그리디
- 웹프로그래밍
- 네이버 부스트캠프 ai tech
- 벡엔드
- BJ
- 백준
- 크루스칼 알고리즘
- greedy
- mysql
- 해시
- 웹서버
- 소수
- Kruskal's Algorithm
- Prim's Algorithm
- 프로그래머스
- 순열 알고리즘
- 정렬 알고리즘
- SERVLET
- 다이나믹 프로그래밍
- 부스트코스
- dbms
- 브라우저
- 웹 프로그래밍
- Today
- Total
끵뀐꿩긘의 여러가지
정규표현식 본문
출처: https://ccambo.blogspot.com/2014/10/regular-expression.html
[ 일반 ] 정규식 (Regular Expression)에 대한 간단 정리
ccambo.blogspot.com
정규 표현식 규칙
* 정규 표현식의 Dot(.) 메타 문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미한다.
표현식
|
의미
|
^x
|
문자열의 시작을 표현하며 x 문자로 시작됨을 의미한다. |
x$
|
문자열의 종료를 표현하며 x 문자로 종료됨을 의미한다. |
.x
|
임의의 한 문자의 자리수를 표현하며 문자열이 x 로 끝난다는 것을 의미한다. |
x+
|
반복을 표현하며 x 문자가 한번 이상 반복됨을 의미한다. |
x?
|
존재여부를 표현하며 x 문자가 존재할 수도, 존재하지 않을 수도 있음을 의미한다. |
x*
|
반복여부를 표현하며 x 문자가 0번 또는 그 이상 반복됨을 의미한다. |
x|y
|
or 를 표현하며 x 또는 y 문자가 존재함을 의미한다. |
(x)
|
그룹을 표현하며 x 를 그룹으로 처리함을 의미한다. |
(x)(y)
|
그룹들의 집합을 표현하며 앞에서 부터 순서대로 번호를 부여하여 관리하고 x, y 는 각 그룹의 데이터로 관리된다. |
(x)(?:y) |
그룹들의 집합에 대한 예외를 표현하며 그룹 집합으로 관리되지 않음을 의미한다. |
x{n}
|
반복을 표현하며 x 문자가 n번 반복됨을 의미한다. |
x{n,}
|
반복을 표현하며 x 문자가 n번 이상 반복됨을 의미한다. |
x{n,m}
|
반복을 표현하며 x 문자가 최소 n번 이상 최대 m 번 이하로 반복됨을 의미한다. |
[xy]
|
문자 선택을 표현하며 x 와 y 중에 하나를 의미한다. |
[^xy]
|
not 을 표현하며 x 및 y 를 제외한 문자를 의미한다. |
[x-z]
|
range를 표현하며 x ~ z 사이의 문자를 의미한다. |
\^
|
escape 를 표현하며 ^ 를 문자로 사용함을 의미한다. |
\b
|
word boundary를 표현하며 문자와 공백사이의 문자를 의미한다. |
\B
|
non word boundary를 표현하며 문자와 공백사이가 아닌 문자를 의미한다. |
\d
|
digit 를 표현하며 숫자를 의미한다. |
\D
|
non digit 를 표현하며 숫자가 아닌 것을 의미한다. |
\s
|
space 를 표현하며 공백 문자를 의미한다. |
\S
|
non space를 표현하며 공백 문자가 아닌 것을 의미한다. |
\t
|
tab 을 표현하며 탭 문자를 의미한다. |
\v
|
vertical tab을 표현하며 수직 탭(?) 문자를 의미한다. -> vertical tab을 나타내고 무의미 |
\w
|
word 를 표현하며 알파벳 + 숫자 + _ 중의 한 문자임을 의미한다. |
\W
|
non word를 표현하며 알파벳 + 숫자 + _ 가 아닌 문자를 의미한다. |
g
|
Global 의 표현하며 대상 문자열내에 모든 패턴들을 검색하는 것을 의미한다. |
i
|
Ignore case 를 표현하며 대상 문자열에 대해서 대/소문자를 식별하지 않는 것을 의미한다. |
m
|
Multi line을 표현하며 대상 문자열이 다중 라인의 문자열인 경우에도 검색하는 것을 의미한다. |
\b와 \B:
정규식 단어 경계 메타 문자 \b 의 정확한 이해
발생일: 2013.02.18 문제: 우리 부부는 주말마다 커피숍에 가서 책을 읽는데, 어제는 날이 좋아서 남양주에 있는 고당이라는 카페로 나들이를 갔다. 작년에 한 번 다녀왔던 곳인데, 한옥 카페이고
ohgyun.com
참고:
https://velog.io/@koseungbin/%EC%A0%95%EA%B7%9C-%ED%91%9C%ED%98%84%EC%8B%9D
정규 표현식
정규 표현식은 특정한 규칙을 가진 문자열 집합을 표현하는데 사용하는 형식 언어이다. > 정규 표현식은 패턴(pattern)으로 특정 목적을 위해 필요한 문자열 집합을 지정하기 위해 쓰이는 식이다.
velog.io
정규 표현식 시각화:
https://regexper.com/#%28%3F!%5Cbto%5Cb%29
Regexper
regexper.com
정규식 연습장:
RegExr: Learn, Build, & Test RegEx
RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).
regexr.com
- 자주 사용되는 정규표현식
한글만: /^[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]$/g
영어만: /^[a-zA-Z]$/g
숫자만: /^[0-9]$/g
한글 금지: /^[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]$/g
영문자 금지: /^[^a-zA-Z$/g
숫자 금지: /^[^0-9]$/g
특수문자: /[\[\]{}()<>?|`~!@#$%^&*-_+=,.;:\"\\\'\\]/g
아이디 (영문소문자+숫자 4~12자리, 영문소문자로 시작):
/^[a-z][a-z0-9_-]{3,11}$/
비밀번호 (영문대소문자+숫자 6~18자리):
/^[A-Za-z0-9_-]{6,18}$/
이름: /^[가-힝]{2,4}$/
전화번호('-'포함): /^\d{2,3}-\d{3,4}-\d{4}$/
이메일: /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
IP주소: /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
대문자만: /^[A-Z]$/g
소문자만: /^[a-z]$/g
URL주소: /^(https?:\/\/)?([a-z\d\.-]+)\.([a-z\.]{2,6})([\/\w\.-]*)*\/?$/
- python 정규표현식
import re # 정규표현식 모듈
p = re.compile('ab*') # 정규표현식 compile
# match: 문자열의 처음부터 정규식과 매치되는지 조사, 매치되면 match객체 return, 아니면 None return
m = p.match("python")
# search: 문자열의 처음부터 정규식과 매치되는 문자열을 검색
m = p.search("python")
# findall: 정규식과 매치되는 모든 문자열을 검색해서 리스트로 return
result = p.findall("life is too short")
# finditer: 정규식과 매치되는 모든 문자열을 검색해서 iterator로 return
result = p.finditer("life is too short")
# sub: 매치된 부분을 치환, subn(): 치환처리된 문자열과 치환된 부분의 개수 반환
result = re.sub(r'([a-z]+)@([a-z]+)\.com', r'\1@\2.net', text)
print(result)
>>> aaa@xxx.net, bbb@yyy.net, ccc@zzz.net
result = re.subn(r'[a-z]+@[a-z]+\.com', 'new-address', text)
print(result)
>>> ('new-address, new-address, ccc@zzz.net', 2)
# split: 패턴에 매치되는 부분으로 문자열 분할
s = '111aaa222bbb333'
result = re.split('[a-z]+', s)
print(result)
>>> ['111', '222', '333']
# match 객체의 메서드
m.group() # 문자열 return
m.start() # 시작위치 return
m.end() # 끝 위치 return
m.span() # (시작, 끝) 튜플 reutrn
정규식 컴파일 옵션
- DOTALL(S) - . 이 줄바꿈 문자를 포함하여 모든 문자와 매치할 수 있도록 한다.
- IGNORECASE(I) - 대소문자에 관계없이 매치할 수 있도록 한다.
- MULTILINE(M) - 여러줄과 매치할 수 있도록 한다. (^, $ 메타문자의 사용과 관계가 있는 옵션이다)
- VERBOSE(X) - verbose 모드를 사용할 수 있도록 한다. (정규식을 보기 편하게 만들수 있고 주석등을 사용할 수 있게된다.)
# ex)
p = re.compile('a.b', re.DOTALL)
p = re.compile(r'\\section') # 파이썬 백슬래시 문제로 주로 rawstring을 사용하여 정규표현식을 나타낸다
정규표현식 십자말풀이
Regex Crossword
A crossword puzzle game using regular expressions. Earn achievements completing puzzle challenges. Easy tutorials for people new to regular expressions.
regexcrossword.com
'Naver boostcamp -ai tech > week 01' 카테고리의 다른 글
선형대수학 (1) | 2022.09.22 |
---|---|
pandas (0) | 2022.09.21 |
Numpy (1) | 2022.09.21 |
CSV, XML, JSON data 파이썬으로 핸들링하기 (1) | 2022.09.20 |
부족한 python 채우기 (1) | 2022.09.20 |