2018-3-11 TIL Regular Expression

정규표현식

정규표현식은 무조건 100% 매칭이 되어야된다. 부분매칭은 안된다.

정규표현식은 최대한 간결하게 만들어야한다.

  1. ”.” => wildcard => 한글자 아무거나에 매칭이 된다. “.“이 진짜 “.”이다.
  2. [abc] : Only a, b, or c 특정한것 하나만 찾을 때, 많이 쓴다.
  3. [^abc] Not a, b, nor c 특정한것 하나를 제외할 때,
  4. ^ : 맨앞
  5. $ : 맨뒤
  6. [a-z] : Characters a to z 소문자 a부터z까지 소문자하나
  7. \w : Any Alphanumeric character
  8. \W : Any Non-alphanumeric character
  9. \d : Any Digit
  10. \D : Any Non-digit character
  11. {m} : m Repetitions
  12. {m,n} : m to n Repetitions // m부터 n까지 사이
  13. “*” : 0개 이상
  14. ”+” : 1개 이상
  15. ”?” : Optional character 글자뒤에 ?를 쓰면 1 또는 0
Task	Text	 
Match	1 file found?	Failed
Match	2 files found?	Success
Match	24 files found?	Success
Skip	No files found.
=> \d+ files{0,1} found\? === \d+ files? found\?

  1. \s : Any Whitespace : 공백문자가 1개 이상을 의미, 스페이스 탭
  2. \S : Any Non-whitespace character, 공백문자가 아닌 모든것 ``` Match 1. abc To be completed Match 2. abc To be completed Match 3. abc To be completed Skip 4.abc

=> \sabc or \s\S\S\S \s : 공백문자 1개이상이 있다를 의미한다. 공백문자는 스페이스, 탭을 포함한다.


17. ^…$ : Starts and ends

Task Text Match Mission: successful To be completed Skip Last Mission: unsuccessful To be completed Skip Next Mission: successful upon capture of target

=> ^Mission: successful$

18. (…) : Capture Group : 괄호로 추출이 가능하다

Task Text Capture Groups Capture file_record_transcript.pdf file_record_transcript To be completed Capture file_07241999.pdf file_07241999 To be completed Skip testfile_fake.pdf.tmp

=> (file.+).pdf$ 괄호로 싼 부분을 재활용하려고한다.

19. (a(bc)) : Capture Sub-group

Task Text Capture Groups Capture Jan 1987 Jan 1987 1987 To be completed Capture May 1969 May 1969 1969 To be completed Capture Aug 2011 Aug 2011 2011

=> ([A-Z][a-z]{2} (\d{4}))

20. (.*)	Capture all

Task Text Capture Groups Capture 1280x720 1280 720 To be completed Capture 1920x1600 1920 1600 To be completed Capture 1024x768 1024 768 => (\d{4})x(\d{3,4})


21. (abc|def)	Matches abc or def

Task Text Match I love cats To be completed Match I love dogs To be completed Skip I love logs To be completed Skip I love cogs

=> I love (cat|dog)s

javascript에서 정규표현식을 사용할때는 / /사이에 넣어야된다.

var str = “My money is 1000, I am 180 tall, and 65kg” var re = /\d+/g var result = str.match(re) result[0] = ‘1000’ result = [‘1000’, ‘180’, ‘65’];

정규표현식을 이용해서 전화번호부 추출하기

str = “David의 전화번호는 010-1234-5678이야” ‘David의 전화번호는 010-1234-5678이야’ var re = /010-(\d{4})-(\d{4})/ undefined str.match(re); [ ‘010-1234-5678’, ‘1234’, ‘5678’, index: 13, input: ‘David의 전화번호는 010-1234-5678이야’ ] str.replace(re, “xxxxxx”) ‘David의 전화번호는 xxxxxx이야’ str.replace(re, “**-$1”) ‘David의 전화번호는 **-1234이야’ str.replace(re, “**-$2”) ‘David의 전화번호는 **-5678이야’ // 추출한 변수를 다시 replace에 재활용을 한다. ```

참고사이트 https://regexone.com/

Written on March 11, 2018