Regex

1,700 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,700
On SlideShare
0
From Embeds
0
Number of Embeds
963
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Regex

  1. 1. 서울시 마포구 상암동 누리꿈스퀘어 연구개발타워 1111호 _ 070.7450.6572 _ dev@jellycoaster.comRegularExpressionJellycoaster Inc.Dev.team
  2. 2. 목차I. Regular Expression?II. 기본 정보III. 캐릭터 클래스IV. 메타클래스 (, )V. 반복 매치VI. 예제서울시 마포구 상암동 누리꿈스퀘어 연구개발타워 1111호 _ 070.7450.6572 _ dev@jellycoaster.com
  3. 3. Regular Expression?• 패턴을 묘사하는 문자열• 특정한 규칙을 표현하기 위한 형식 언어• 문자열을 검색하거나, 주어진 문자열에서 원하는부분을 추출하거나, 검색 및 치환을 하는 데 사용된다.I2013 Jellycoaster Inc. Dev.team
  4. 4. 기본 정보• Metacharacters 예약된 문자들• anchor• 간단한 매칭II2013 Jellycoaster Inc. Dev.team
  5. 5. Metacharacter정규식 표기에 사용되도록 예약 된 문자들{}[]()^$.|*+?메타캐릭터를 정규식에서 일치시킬 때는앞에 백슬래쉬를 붙인다.2013 Jellycoaster Inc. Dev.team
  6. 6. Anchor스트링의 ‘어느 지점’에 매치시킬지를 지정^ : 스트링의 시작$ : 스트링의 끝, 또는 스트링의 끝 바로 앞의 “n”^ 와 $ 가 동시에 쓰이면 스트링의 시작과끝에 매치되어야 하므로, 정규식이 스트링전체에 매치된다.2013 Jellycoaster Inc. Dev.team
  7. 7. Simple Matching“Hello World” =~ /world/“Hello World” =~ /o W/“Hello World” =~ /o/“2+2=4” =~ /2+2/“2+2=4” =~ /2+2/“housekeeper” =~ /keeper/“housekeeper” =~ /^keeper/“housekeeper” =~ /keeper$/문자 매칭메타캐릭터매칭앵커2013 Jellycoaster Inc. Dev.team
  8. 8. 캐릭터 클래스• Description• 캐릭터 클래스 내의 metacharacters• 보편적으로 사용되는 캐릭터 클래스들에 대한 축약형• Word anchorIII2013 Jellycoaster Inc. Dev.team
  9. 9. Description매치될 수 있는 하나 이상의 캐릭터들의 집합.“cat” =~ /cat/“bat” =~ /[bcr]at/“cat” =~ /[bcr]at/“rat” =~ /[bcr]at/“item0” =~ /item[0123456789]/...“item9” =~ /item[0123456789]/2013 Jellycoaster Inc. Dev.team
  10. 10. Metacharacters캐릭터 클래스 내부에서 사용되는 특수문자들- : 범위 연산자. 클래스 제일 앞, 혹은 제일 뒤에 오면일반문자 “-”] : 캐릭터 클래스의 끝 : 이스케이프 시퀀스^ : 네거티브 캐릭터 클래스. 클래스 제일 앞에 오면 대괄호안에 있는 문자들을 제외한 모든 문자들을 의미2013 Jellycoaster Inc. Dev.team
  11. 11. 축약형보편적으로 사용되는 캐릭터 클래스의축약형d : [0-9]와 비로마권 스크립트에 있는 숫자s : whitespace. [ trnf] 등w : [0-9a-zA-Z_]와 비로마권 스크립트에 있는 문자D : d 에 속하지 않는 문자들. [^d]S : s 에 속하지 않는 문자들. [^s]W : w 에 속하지 않는 문자들. [^w]. : n 을 제외한 임의의 캐릭터 하나.2013 Jellycoaster Inc. Dev.team
  12. 12. Word anchor두 캐릭터 사이의 지점에 해당되는데, 이때 두캐릭터 중 하나는 w 에, 다른 하나는 W 에매치되는 곳“Housecat catenates house and cat” =~ /cat/“Housecat catenates house and cat” =~ /bcat/“Housecat catenates house and cat” =~ /catb/“Housecat catenates house and cat” =~ /bcatb/2013 Jellycoaster Inc. Dev.team
  13. 13. Metacharacter (, )• 그룹짓기, 계층적 매칭• 매치된 부분 추출IV2013 Jellycoaster Inc. Dev.team
  14. 14. 그룹짓기, 계층적 매칭정규표현식의 일부를 하나의 유닛으로 취급/(ac|b)b/ # acb, bb 에 매치/(^a|b)c/ # 문자열 시작지점에 있는 ac,에 매치되거나위치에 관계 없이 bc 에 매치./house(cat(s|)|)/ # housecats, housecat, house 에 매치.2013 Jellycoaster Inc. Dev.team
  15. 15. 매치된 부분 추출각 괄호에 해당하는 값을 추출해낸다$string = “12:34:56”;$pattern = “(dd):(dd):((d)d)/”;preg_match($pattern, $string, $matches);echo $matches[1]; // 12echo $matches[2]; // 34echo $matches[3]; // 56echo $matches[4]; // 52013 Jellycoaster Inc. Dev.team
  16. 16. 반복 매치• Quantifier metachacter• Greedy quantifier• Non-greedy quantifierV2013 Jellycoaster Inc. Dev.team
  17. 17. Quantifier metacharacter정규식의 특정 부분이 반복될 횟수를 지정캐릭터, 캐릭터 클래스, 그룹의 바로 뒤에명시a? : ‘a’ 가 1회, 혹은 0회 매치a* : ‘a’ 가 0회, 또는 그 이상 매치.a+ : ‘a’ 가 1회, 또는 그 이상 매치.a{n,m} : 최소 n 회, 최대 m 회 반복a{n,} : 최소 n 회 이상 반복a{n} : 정확히 n 회 반복2013 Jellycoaster Inc. Dev.team
  18. 18. Greedy quantifier수량자들은 기본적으로 전체 정규식 매치가성공할 수 있는 선에서, 가능한 가장 긴문자열에 매치된다.2013 Jellycoaster Inc. Dev.team
  19. 19. Non-greedy quantifier일치하는 가장 짧은 문자열에 매치a?? : ‘a’ 가 1회, 혹은 0회 매치. 0회를 먼저 시도a*? : ‘a’ 가 0회, 또는 그 이상 매치. 가능한 한 최소로.a+? : ‘a’ 가 1회, 또는 그 이상 매치. 가능한 한 최소로.a{n,m}? : 최소 n 회, 최대 m 회 반복. 가능한 한 최소로.a{n,}? : 최소 n 회 이상 반복. 가능한 한 최소로.a{n}? : 정확히 n 회 반복. {n}과 동일하며, 표기법의일관성을 위해 존재한다.2013 Jellycoaster Inc. Dev.team
  20. 20. Greedy vs Non-greedy$string = “The programming republic of perl”;$greedy = “/^(.+)(e|r)(.*)$/”;$non_greedy = “/^(.+?)(e|r)(.*)$/”;preg_match($greedy, $string, $m_greedy);preg_match($non_greedy, $string , $m_non_greedy);m_greedy[1] „The programming republic of pe‟[2] „r‟[3] „l‟m_non_greedy[1] „Th‟[2] „e‟[3] „ programming republic of perl‟2013 Jellycoaster Inc. Dev.team
  21. 21. 예제• 이메일• 적어도 소문자 하나, 대문자 하나, 숫자 하나가포함되어 있는 문자열• 숫자VI2013 Jellycoaster Inc. Dev.team
  22. 22. 이메일/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$/간단하고 보편적인 예제.2013 Jellycoaster Inc. Dev.team
  23. 23. 숫자 표시/^[+-]? * # 부호와 공백( # 정수 또는 소수의 유효숫자부d+ # a 로 시작하면서(.d*)? # a.b 또는 a. 형태의 유효숫자|.d+ #.b 형태의 유효숫자)([eE][+-]?d+)? # 추가적으로 올 수 있는 지수부$/xhttp://gypark.pe.kr/wiki/Perl/%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D2013 Jellycoaster Inc. Dev.team
  24. 24. 최소 하나의 대문자, 소문자, 숫자를포함하는 문자열(8~15자)/^(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,15}$/http://appletree.or.kr/blog/notes/%EC%9E%90%EC%A3%BC-%EC%93%B0%EC%9D%B4%EB%8A%94-%EC%A0%95%EA%B7%9C%EC%8B%9Dregular-expression-%EC%9C%A0%ED%98%95/2013 Jellycoaster Inc. Dev.team
  25. 25. 참고 사이트http://gypark.pe.kr/wiki/Perl/%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9Dhttp://appletree.or.kr/blog/tag/regular-expressions/2013 Jellycoaster Inc. Dev.team
  26. 26. 서울시 마포구 상암동 누리꿈스퀘어 연구개발타워 1111호 _ 070.7450.6572 _ dev@jellycoaster.com감사합니다!Jellycoaster Inc.Dev.team

×