2018-3-11 TIL Regular Expression
정규표현식
정규표현식은 무조건 100% 매칭이 되어야된다. 부분매칭은 안된다.
정규표현식은 최대한 간결하게 만들어야한다.
- ”.” => wildcard => 한글자 아무거나에 매칭이 된다. “.“이 진짜 “.”이다.
- [abc] : Only a, b, or c 특정한것 하나만 찾을 때, 많이 쓴다.
- [^abc] Not a, b, nor c 특정한것 하나를 제외할 때,
- ^ : 맨앞
- $ : 맨뒤
- [a-z] : Characters a to z 소문자 a부터z까지 소문자하나
- \w : Any Alphanumeric character
- \W : Any Non-alphanumeric character
- \d : Any Digit
- \D : Any Non-digit character
- {m} : m Repetitions
- {m,n} : m to n Repetitions // m부터 n까지 사이
- “*” : 0개 이상
- ”+” : 1개 이상
- ”?” : 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\?
- \s : Any Whitespace : 공백문자가 1개 이상을 의미, 스페이스 탭
- \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/