정규표현식의 기본 문법
정규표현식은 소프트웨어에 따라서 방식이나 지원 범위가 다를 수 있습니다.
“^The” | "The"로 시작하는 문자열 |
"of despair$" | "of despair"로 끝나는 문자열 |
"^abc$" | "abc"로 시작하고 "abc"로 끝나는 문자열 ("abc" 라는 문자열도해당됨) |
"notice" | "notice"가 들어 있는 문자열 |
"ab*" | a 다음에 b가 0개 이상 ("a", "ab", "abbb", 등) |
"ab+" | a 다음에 b가 1개 이상 ("ab", "abbb", 등) |
"ab?" | a 다음에 b가 있거나 없거나 (ab 또는 a) |
"ab{2}" | a 다음에 b가 2개 있는 문자열 ("abb") |
"ab{2,}" | a 다음에 b가 2개 이상 ("abb", "abbbb", 등.) |
"ab{3,5}" | a 다음에 b가 3개에서 5개 사이 ("abbb", "abbbb", 또는 "abbbbb") |
'*', '+', '?'는 각각 "{0,}", "{1,}", "{0,1}"와 같습니다.
( )는 문자열을 묶음 처리할 때 사용 | |
"a(bc)*" | a 다음에 “bc”가 0개 이상 (묶음 처리) |
"a(bc){1,5}" | a 다음에 “bc”가 1개에서 5개 사이 |
"hi|hello" | "hi"나 "hello"가 들어 있는 문자열 |
(응용) "(b|cd)ef" | "bef" 또는 "cdef" |
(응용) "(a|b)*c" | a와 b가 섞여서 여러번 나타나고 그뒤에 c가 붙어있는 패턴 |
. (점) | 임의의 한 문자 |
ex) "^.{3}$" 3문자로만 되어 있는 문자열 |
[] 괄호 안에 있는 내용 중 임의의 한 문자 [] 안에서 첫문자로 ‘^’를 쓰면 괄호 내용의 부정 ? 즉 괄호 안에 포함되지 않는 한문자 | |
"[ab]" | a 또는 b ("a|b"와 동일한 표현) |
"[a-d]" | 소문자 'a'에서 'd'까지 ("a|b|c|d"또는 "[abcd]"와 동일) |
(응용) "^[a-zA-Z]" | 영문자로 시작하는 문자열 |
(응용) "[0-9]%" | % 문자 앞에 하나의 숫자가 붙어 있는 패턴 |
(응용) "%[^a-zA-Z]%" | 두 % 문자 사이에 영문자가 없는 패턴 |
특수 문자 자체를 검색하기 및 사용하기 | ||||
\^ | ^ |
| \. | . |
\[ | [ |
| \$ | $ |
\( | ( |
| \) | ) |
\| | | |
| \* | * |
\+ | + |
| \? | ? |
\{ | { |
| \\ | \ |
\n | 줄넘김문자 |
| \r | 리턴문자 |
\w | 알파벳과 _ (밑줄) |
| \W | 알파벳과 _이 아닌 것 |
\s | 빈 공간 |
| \S | 빈 공간이 아닌 것 |
\d | 숫자 |
| \D | 숫자가 아닌 것 |
\b | 단어와 단어 사이의 경계 |
| \B | 단어 사이의 경계가 아닌 곳 |
\t | Tab문자 |
| \xnn | 16진수 nn에 해당하는문자 |
[ ] 안에서는 특수 문자가 모두 효력을 잃게 됩니다.
검색 + 치환을 위한 하부식(부분식) |
( )로 둘러싼 부분은 각각 하나의 덩어리로 취급해서, 검색시 ( ) 안에 해당되는 내용들을 변경할 내용에서 그대로 가져다 이용할 수 있습니다. 검색된 각각의 ( )안에 해당되는 내용은 변경할 내용에서 $1, $2, .. 등으로 지정해서 쓸 수 있습니다. |
예제) mp3파일 이름 바꾸기 검색 : (.*) - (.*)\.mp3 .*은 길이에 상관없이 임의의 문자열, \.은 점 치환 : $2 - $1.mp3 앞에서 검색한 ( )안에 해당되는 내용끼리 순서 바꾸기 ex) "제목 - 연주자.mp3" Þ "연주자 - 제목.mp3" |
앞에서 정의한 하부식을 다시 활용하기 (제가 잘못 이해한 것일 수도 있는데) |
\n은 ( ) 하부식 중에서 n번째 하부식을 가리킵니다. |
예제) (.+)\1+ \1로 되어 있으니까 첫번째 부분식 (.+)를 가리킵니다. 위 내용을 해석하자면, 일단 (.+)가 있으니까 이에 해당되는 내용을 찾고, \1+이 있으니까 첫번째 부분식 (.+)와 똑같은 내용이 그 뒤에 1번 이상 있는 문자열을 찾습니다. |
예제) abab같은 문자열이 위에 해당되는데, 일단 (.+) 즉 임의의 문자열 ab를 찾고 그 뒤에 \1+로 첫번째 부분식을 다시 1번 이상 있는 것을 찾으니까 뒤의 ab가이에 해당합니다. |
(?i) | 대소문자 무시 (기본값) |
(?-i) | 대소문자 구분 |
(?g) | "greedy" 모드로 전환 (기본값) |
(?-g) | "greedy" 모드 해제, 따라서 "+"는 "+?"과 동일한 것으로 인식 |
출처: http://wyseburn.tistory.com/entry/정규표현식-기초-1 [메모장입니다.]
'공부방 > ETC..' 카테고리의 다른 글
[Tool] Notepad++ 여러개 실행 (0) | 2023.02.23 |
---|---|
Virtual-Key Codes (0) | 2021.01.28 |
[기타] 크롬 시크릿모드로 실행하기 (0) | 2013.11.19 |
[사이트] 용어 해석,설명 (0) | 2009.07.23 |
(必)hacking과 조치사항 (0) | 2009.07.23 |