[[TableOfContents]] == 참여자 == 멘토 : 변형진 인원 : 김수경 김준석 김태진 서지혜 == 목표 == Regular Expression을 정의하고 더러운 상황에 대한 Regex의 강력함을 느껴보자. == 1주차 == === 정규표현식은 뭔가? === Regular Expression입니다. 우리가 배운걸 순서대로 쭉 적어볼까요 === 어디서 연습할 수 있나? === html을 띄워놓고 익스플로러 or 크롬의 개발자 도구에서 javascript 콘솔모드로 "문장".matches("\Regex\"); 하면 나온답니다용. java에서는 Matcher를 통해서. (맞는지 잘 모르겠당) {{{ Pattern.comppile("정규표현식"); Matcher matcher = new Matcher(Pattern, "찾을 텍스트"); matcher.find(); }}} -틀렸으면 수정 === 문법은? === {{{ . * + [] ^ $ | {} () \ [A-Za-Z0-9] \w \W \s \S 괄호 안에서의 ^ 괄호 밖에서의 ^ }}} . == 문자(모든 것) 하나 * == 앞의 문자(명령)를 0개 이상 연속으로 찾을 때. e.g. '''.*''' 로 하면 여러 문자(모든 것)을 0개 이상 받아옵니다. + == 앞의 문자(명령)를 1개 이상 연속으로 찾을 때. []대괄호. == 찾을 문자들을 넣으면 됨. a-zA-Z 라던지, 0-9라던지. $ 앞의 명령을 마지막으로 하는 것들을 찾음. {}중괄호 == 갯수 지정가능. {0,2} 이면 0~2개사이의 갯수를 찾음. ()소괄호 == 명령들을 |로 여러가지 나타낼 수 있음. == 2주차 == 복습 및 예제 코드 작성 === 문제1 === {{{ 여기서 찾기 answer : <.+?> }}} === 문제2 === {{{ 태그 안의 손상된 " "을 검색하여라 예제 }}} 실제 예제 {{{ answer : <([^">]+|"[^">]*")+"[^">]*> }}} 답이 절대 적인것은 아니고, 효율의 차이는 있을 수 있음. 저것에 대한 답을 찾아냈다면, 맞는것들'만' 찾아내는 것도 해보는건 어떨까요? 그러려면 표준을 알아야 한다는... === 문제 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=' '; 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)) }}} ------------------------ [2011년활동지도], [RegularExpression]