2. 목표 ¶
Regular Expressionì�„ ì •ì�˜í•˜ê³ ë�”러운 ìƒ�황ì—� 대한 Regexì�˜ ê°•ë ¥í•¨ì�„ ëŠ�ê»´ë³´ìž�.
3.1. ì •ê·œí‘œí˜„ì‹�ì�€ ë”ê°€? ¶
Regular Expression입니다.
우리가 배운걸 순서대로 ì‰ ì �어볼까요
3.2. 어디서 ì—°ìŠµí• ìˆ˜ 있나? ¶
htmlì�„ ë�„ì›Œë†“ê³ ì�µìŠ¤í”Œë¡œëŸ¬ or í�¬ë¡¬ì�˜ 개발ìž� ë�„구ì—�서 javascript 콘솔모드로 "문장".matches("\Regex\"); 하면 나온답니다용.
javaì—�서는 Matcher를 통해서. (맞는지 잘 ëª¨ë¥´ê² ë‹¹)
Pattern.comppile("ì •ê·œí‘œí˜„ì‹�");
Matcher matcher = new Matcher(Pattern, "찾� �스트");
matcher.find();
-í‹€ë ¸ìœ¼ë©´ ìˆ˜ì •
3.3. 문법ì�€? ¶
. * + [] ^ $ | {} () \
[A-Za-Z0-9]
\w \W
\s \S
괄호 안�서� ^ 괄호 밖�서� ^
. == 문ìž�(ëª¨ë“ ê²ƒ) 하나
* == 앞ì�˜ 문ìž�(ëª…ë ¹)를 0ê°œ ì�´ìƒ� ì—°ì†�으로 ì°¾ì�„ 때.
[]대괄호. == 찾� 문�들� 넣으면 �. a-zA-Z ��지, 0-9��지.
$ 앞ì�˜ ëª…ë ¹ì�„ 마지막으로 하는 것들ì�„ ì°¾ì�Œ.
{}중괄호 == 갯수 ì§€ì •ê°€ëŠ¥. {0,2} ì�´ë©´ 0~2개사ì�´ì�˜ 갯수를 ì°¾ì�Œ.
()소괄호 == ëª…ë ¹ë“¤ì�„ |로 여러가지 나타낼 수 있ì�Œ.
* == 앞ì�˜ 문ìž�(ëª…ë ¹)를 0ê°œ ì�´ìƒ� ì—°ì†�으로 ì°¾ì�„ 때.
e.g. .* 로 하면 여러 문ìž�(ëª¨ë“ ê²ƒ)ì�„ 0ê°œ ì�´ìƒ� 받아옵니다.
+ == 앞ì�˜ 문ìž�(ëª…ë ¹)를 1ê°œ ì�´ìƒ� ì—°ì†�으로 ì°¾ì�„ 때.[]대괄호. == ì°¾ì�„ 문ìž�들ì�„ 넣으면 ë�¨. a-zA-Z ë�¼ë�˜ì§€, 0-9ë�¼ë�˜ì§€.
$ 앞ì�˜ ëª…ë ¹ì�„ 마지막으로 하는 것들ì�„ ì°¾ì�Œ.
{}중괄호 == 갯수 ì§€ì •ê°€ëŠ¥. {0,2} ì�´ë©´ 0~2개사ì�´ì�˜ 갯수를 ì°¾ì�Œ.
()소괄호 == ëª…ë ¹ë“¤ì�„ |로 여러가지 나타낼 수 있ì�Œ.
4.2. ë¬¸ì œ2 ¶
태그 안ì�˜ ì†�ìƒ�ë�œ " "ì�„ 검색하여ë�¼ ì˜ˆì œ <a href = "class > </a> <a href = "class" > </a> <a href = "clas"s" > </a>
ì‹¤ì œ ì˜ˆì œ
<html> <a href ="abc"></a> <a href ="abc"></a> <a href ="dfw"></a> <a href ="dfdof></a> <a href ="dfdof class="dfdfd"></a> <a href ="dfdof" class=dfdfd" name ="cdef"></a> </html> answer : <([^">]+|"[^">]*")+"[^">]*>
답ì�´ ì ˆëŒ€ ì �ì�¸ê²ƒì�€ ì•„ë‹ˆê³ , 효율ì�˜ ì°¨ì�´ëŠ” 있ì�„ 수 있ì�Œ.
ì €ê²ƒì—� 대한 답ì�„ 찾아냈다면, 맞는것들'ë§Œ' 찾아내는 것ë�„ 해보는건 어떨까요? ê·¸ëŸ¬ë ¤ë©´ 표준ì�„ 알아야 한다는...
4.3. ë¬¸ì œ 3 ¶
간단한 JavaScript ì˜ˆì œ
"http://www.naver.com www.naver.com naver.com google.co.kr http://kio.zc.bz/Lecture/regexp.html#chap05".match(/(http:\/\/)?([a-zA-Z]+\.)+[a-zA-Z]+\/?([^\s]+)*/g)ë˜� 다른 ì˜ˆì œ (ì €ë²ˆì‹œê°„ê³¼ ìœ ì‚¬í•¨) 스í�¬ë¦½íЏì—�서 괄호가 ì œëŒ€ë¡œ ì—´ë¦¬ê³ ë‹«í˜”ëŠ”ì§€, ì œëŒ€ë¡œ 닫히지 않ì�€ ì¼€ì�´ìŠ¤ë¥¼ 뱉어줌.
var str='<body onload="firprint(;" onkeydown="keyboard);"> <input value="pause" onclick="pause();"/>'; str.match(/\s[^()\s]*([^()]*[)]|[(][^()]*)/g);으.. ì•„ê¹� ì œëŒ€ë¡œ ë��는ë�° 지금ì�€ ë˜� 안ë�˜ë„¤ìš” --
- ì�´ê²Œ ë�였ì�„까요 -ã……- -김태진
str.match(/\s[^()\s]*([^()]*[)]|[(][^()]*)/g); str.match(/\s([(][^(]*|[^)][)])*/g); str.match(/((http:[^\s]*)|((\s[^/.]*[.][^/.]*)))\s/g); ((3*4)+2+4)-(23)) ((3*4)+(2+4)-23)) ((3*4)+(2+4)-(23)) (3*4)+(2+4)-(23)) ((3*4)+(2+4-(23))










