뉴질랜드 다이어리(NZ Diary) 라빠
정규표현식(Regular Expression) 기본 본문
문자지정 . 사용예제
. 은 아무 문자나 1개를 가리킨다.
하지만 "줄바꿈 문자"는 제외된다.
====================================
Find h.t
Replace 123
Source hat halt hit heat hot
Result 123 halt 123 heat 123
====================================
Find h..t
Replace 1234
Source hat halt hit heat hot
Result hat 1234 hit 1234 hot
====================================
문자지정 [ ] 사용예제
[ ] 은 그 안에 있는 문자중 아무것 1개를 가리킨다.
[abc] a,b,c 중 아무것이나 1개
[1234] 1,2,3,4 중 아무것이나 1개
[a-z] 알파벳 소문자 중 아무것이나 1개
[A-Z] 알파벳 대문자 중 아무것이나 1개
[0-9] 숫자 중 아무것이나 1개
[a-zA-Z] 알파벳 소문자나 대문자 중 아무것이나 1개
[a-zA-Z0-9_] 알파벳, 숫자, 밑줄문자 중 아무것이나 1개
====================================
Find h[aiu]t
Replace 123
Source hat het hit hot hut
Result 123 het 123 hot 123
====================================
문자지정 [^ ] 사용예제
[^ ] 은 그 안에 있는 문자를 제외한 문자중 아무것 1개를 가리킨다.
[^abc] a,b,c 이외의 문자 중 아무것이나 1개
[^1234] 1,2,3,4 이외의 문자 중 아무것이나 1개
[^a-z] 알파벳 소문자 이외의 문자 중 아무것이나 1개
[^A-Z] 알파벳 대문자 이외의 문자 중 아무것이나 1개
[^0-9] 숫자 이외의 문자 중 아무것이나 1개
[^a-zA-Z] 알파벳 소문자나 대문자 이외의 문자 중 아무것이나 1개
[^a-zA-Z0-9_]알파벳, 숫자, 밑줄문자 이외의 문자 중 아무것이나 1개
====================================
Find h[^aiu]t
Replace 123
Source hat het hit hot hut
Result hat 123 hit 123 hut
====================================
개수지정 * 사용예제
* 은 바로 앞에 있는 문자가 0개 또는 그 이상 있는 것을 가리킨다.
{0,}과 같은 의미이다.
====================================
Find ha*t
Replace 123
Source ht hit hat hot haat hut haaaaat
Result 123 hit 123 hot 123 hut 123
====================================
개수지정 + 사용예제
+ 은 바로 앞에 있는 문자가 1개 또는 그 이상 있는 것을 가리킨다.
{1,}과 같은 의미이다.
====================================
Find ha+t
Replace 123
Source ht hit hat hot haat hut haaaaat
Result ht hit 123 hot 123 hut 123
====================================
개수지정 ? 사용예제
? 은 바로 앞에 있는 문자가 0개 또는 1개 있는 것을 가리킨다.
{0,1}과 같은 의미이다.
====================================
Find ha?t
Replace 123
Source ht hit hat hot haat hut haaaaat
Result 123 hit 123 hot haat hut haaaaat
====================================
개수지정 {n} 사용예제
{n} 은 바로 앞에 있는 문자가 n개 있는 것을 가리킨다.
====================================
Find ha{2}t
Replace 123
Source ht hit hat hot haat hut haaaaat
Result ht hit hat hot 123 hut haaaat
====================================
개수지정 {n,} 사용예제
{n,} 은 바로 앞에 있는 문자가 n개 이상 있는 것을 가리킨다.
====================================
Find ha{2,}t
Replace 123
Source ht hit hat hot haat hut haaaaat
Result ht hit hat hot 123 hut 123
====================================
개수지정 {n,m} 사용예제
{n,m} 은 바로 앞에 있는 문자가 n개 이상, m개 이하 있는 것을 가리킨다.
====================================
Find ha{2,4}t
Replace 123
Source ht hat haat haaat haaaat haaaaat
Result ht hat 123 123 123 haaaaat
====================================
개수지정 Greedy방식과 Lazy방식
문자 개수를 지정하는 방법은 크게 Greedy방식과 Lazy방식으로 나뉘어진다.
Lazy방식은 Non-Greedy 방식이라고 한다.
Greedy 방식은 욕심이 많아서 가능한 최대의 것을 선택한다.
Lazy방식은 게을러서 가능한 최소의 것을 선택한다.
Greedy 방식뒤에 ?을 붙이면 Lazy방식이 된다.
==================
= Greedy = Lazy =
==================
* *?
+ +?
? ??
{n} {n}?
{n,} {n,}?
{n,m} {n,m}?
==================
* 은 Greedy 방식으로, 바로 앞에 있는 문자가 0개 또는 그 이상 있는것중, 가능한 최대의 것을 가리킨다.
*? 은 Lazy 방식으로, 바로 앞에 있는 문자가 0개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
+ 은 Greedy 방식으로, 바로 앞에 있는 문자가 1개 또는 그 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
+? 은 Lazy 방식으로, 바로 앞에 있는 문자가 1개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
? 은 Greedy 방식으로, 바로 앞에 있는 문자가 0개 또는 1개 있는 것 중, 가능한 최대의 것을 가리킨다.
?? 은 Greedy 방식으로, 바로 앞에 있는 문자가 0개 또는 1개 있는 것 중, 가능한 최소의 것을 가리킨다.
{n} 은 Greedy 방식으로, 바로 앞에 있는 문자가 n개 있는 것을 가리킨다.
{n}? 은 Lazy 방식으로, 바로 앞에 있는 문자가 n개 있는 것을 가리킨다.
{n} 과 {n}? 은 동일하다.
{n,} 은 Greedy 방식으로, 바로 앞에 있는 문자가 n개 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
{n,}? 은 Lazy 방식으로, 바로 앞에 있는 문자가 n개 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
{n,m} 은 Greedy 방식으로, 바로 앞에 있는 문자가 n개 이상, m개 이하 있는 것 중, 가능한 최대의 것을 가리킨다.
{n,m}? 은 Lazy 방식으로, 바로 앞에 있는 문자가 n개 이상, m개 이하 있는 것 중, 가능한 최소의 것을 가리킨다.
.* 과 .*? 은 일반적으로 많이 쓰이는 정규표현식 패턴이다.
. 은 "줄바꿈문자"를 제외한 아무 문자나 1개를 가리킨다.
* 은 Greedy 방식으로, 바로 앞에 있는 문자가 0개 또는 그 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
*? 은 Lazy방식으로, 바로 앞에 있는 문자가 0개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
.* 은 Greedy 방식으로, "줄바꿈문자"를 제외한 아무 문자나 0개 또는 그 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
.*? 은 Lazy방식으로, "줄바꿈문자"를 제외한 아무 문자나 0개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
====================================
Find <.*>
Replace 123
Source Regex <b>Greedy</b> Style
Regex <i>Lazy</i> Style
Result Regex 123 Style
Regex 123 Style
====================================
<.*> 과 일치하는것 : <로 시작하고, 중간에 아무 문자나 0개 이상 들어있고, >로 끝나는 것 중, 가능한 최대의것
<b>Greedy</b>, <i>Lazy</i>
====================================
Find <.*?>
Replace 123
Source Regex <b>Greedy</b> Style
Regex <i>Lazy</i> Style
Result Regex 123Greedy123 Style
Regex 123Lazy123 Style
====================================
<.*?> 과 일치하는것 : <로 시작하고, 중간에 아무 문자나 0개 이상 들어있고, >로 끝나는 것 중, 가능한 최소의것
<b>, </b>, <i>, </i>
.+ 과 .+? 도 일반적으로 많이 쓰이는 정규식 패턴이다.
. 은 "줄바꿈문자"를 제외한 아무 문자나 1개를 가르킨다.
+ 은 Greedy 방식으로, 바로 앞에 있는 문자가 1개 또는 그 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
+? 은 Lazy 방식으로, 바로 앞에 있는 문자가 1개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
.+ 은 Greedy 방식으로, "줄바꿈문자"를 제외한 아무 문자나 1개 또는 그 이상 있는 것 중, 가능한 최대의 것을 가리킨다.
.+? 은 Lazy방식으로, "줄바꿈문자"를 제외한 아무 문자나 1개 또는 그 이상 있는 것 중, 가능한 최소의 것을 가리킨다.
위치지정 ^ 사용예제
^ 은 줄의 제일 처음을 가리킨다.
====================================
Find ^h.t
Replace 123
Source hat hit hot
Result 123 hit hot
====================================
위치지정 $ 사용예제
$ 은 줄의 제일 마지막을 가리킨다.
====================================
Find h.t$
Replace 123
Source hat hit hot
Result hat hit 123
====================================
한 줄 전체 선택 ^.*$ 사용예제
^.*$ 은 줄 처음과 끝사이에 아무 문자나 0개 이상 있는것을 의미하므로, 결과적으로 한 줄 전체를 가리킨다.
아무것도 없는 빈 줄도 해당된다.
====================================
Find ^.*$
Replace 123
Source Regular Expressions
Greedy Style
Lazy Style
Result 123
123
123
====================================
Group 지정 ( ) 사용 예제
( ) 은 Group을 지정할때 사용된다.
Group은 개수 지정 패턴과 함께 사용될때, 한개의 문자 처럼 취급된다.
====================================
Find ba(na)*
Replace 123
Source ba na bana banana nana bananana
Result 123 na 123 123 nana 123
====================================
====================================
Find ba(na)+
Replace 123
Source ba na bana banana nana bananana
Result ba na 123 123 nana 123
====================================
Group Referencing $1 사용예제
Group으로 지정된 내용을 Find Pattern 이나 Replace Pattern 안에서 다시 사용하는 것을 Referencing이라고 한다.
$1, $2, $3 ... 이런 스타일의 요소들은 Group으로 지정된 내용을 Replace Pattern 안에서 Referencing할 때 사용된다.
====================================
Find h(.*?)t
Replace $1
Source hat halt hit heat hot
Result a al i ea o
====================================
Replace Pattern에서 $1은 (.*?) Group에 해당하는 것을 가리킨다.
Group Referencing \1 사용예제
Group으로 지정된 내용을 Find Pattern 이나 Replace Pattern 안에서 다시 사용하는 것을 Referencing이라고 한다.
\1, \2, \3 ... 이런 스타일의 요소들은 Group으로 지정된 내용을 Replace Pattern 안에서 Referencing할 때 사용된다.
====================================
Find (h.t)\1
Replace 123
Source hathat hitbit hothot hutcut
Result 123 hitbit 123 hutcut
====================================
Find Pattern에서 \1은 (h.t) Group에 해당하는 것을 가리킨다.
결과적으로 h로 시작하고, 중간에 아무 문자나 하나 들어가고, t로 끝나는 단어가 두번 반복되는 것이 123으로 바뀐다.
OR 선택 지정 ( | ) 사용 예제
( | ) 은 | 으로 나뉘어진 여러개의 Pattern중에서 하나와 일치하는 것을 가리킨다.
====================================
Find (eg|sa|be)g
Replace 123
Source egg eng sag sig beg bag
Result 123 eng 123 sig 123 bag
====================================
주요 Escape 문자 목록
\u0020 16진수 Unicode 문자, 항상 4자리로 사용
\x20 16진수 ASCII 문자, 항상 2자리로 사용
\t 탭 문자, Tab, \u0009
\r 줄 바꿈 문자, Carriage Return, \u000D
\n 줄 바꿈 문자, Line Feed, \u000A
\s 공백 문자, White-Space Character, \t \r \n 스페이스 포함
\S \s 이외의 문자
\d 숫자, [0-9] 과 같은 의미
\D \d 이외의 문자, [^0-9] 과 같은 의미
\w Word Character, [a-zA-Z0-9_] 과 한글 일본어 중국어 등의 유니코드 문자 포함
\W \w 이외의 문자
\b [ ] 안에서 사용될 때는 백스페이스 문자, Backspace, \u0008
[ ] 밖에서 사용될 때는 \w 과 \W 사이의 경계, Word Boundary
Replace Pattern에서 사용될 때는 항상 백스페이스 문자
\\ \ 문자 자체를 가리킬 때 사용
비슷한 사용법 \. \* \+ \? \^ \$ \( \) \{ \} \[ \]
Word Boundary \b 사용 예제
\b는 \w와 \W 의 경계를 가리킨다.
\b는 문자 자체를 가리키는 것이 아니다. ( ^이나 $이 문자 자체를 가리키는 것이 아닌것과 동일하다.)
주로 단어가 시작하는 것을 가리키거나, 단어가 끝나는 것을 가리킬때 사용된다.
====================================
Find \b3
Replace x
Source 333 333 333
Result x33 x33 x33
====================================
\b3 과 일치하는것 : 단어의 제일 앞에 있는3
====================================
Find 3\b
Replace x
Source 333 333 333
Result 33x 33x 33x
====================================
3\b 과 일치하는것 : 단어의 제일 뒤에 있는3
줄 바꿈 문자 \r\n 사용예제
.NET기반의 정규식 도구는 많이 있지만, Replace Pattern에서 \r 나 \n 같은 Escape Squence 문자를 정확하게 다루는 도구는 eLiner가 거의 유일하다.
다른 .NET기반의 정규식 도구들은 대부분 Find Pattern에서는 Escape Sequence 문자를 잘 다루지만, Replace Pattern에서는 Escape Sequence 문자를 제대로 다루지 못한다.
====================================
Find <br>
Replace \r\n
Source spring<br>summer<br>fall<br>winter
Result spring
summer
fall
winter
====================================
'개발' 카테고리의 다른 글
Action Bar 사용방법 (0) | 2014.05.19 |
---|---|
RGB 색상표 (0) | 2014.05.19 |
Android™ 1.5 android.R.drawable Icon Resources (0) | 2014.05.19 |
Mysql 기본 명령어 (0) | 2014.05.19 |
Proguard(프로가드) 설정법 (0) | 2014.05.19 |