Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- js코테
- HTML5
- 백준nodejs
- 몽고DB
- JS
- CSS
- 백준
- 리액트커뮤니티
- 코딩테스트
- HTML
- 리액트
- 다이나믹프로그래밍
- 코테
- 백준알고리즘
- 리액트댓글기능
- dp알고리즘
- 백준구현
- 프로그래머스
- 알고리즘
- 백준js
- 익스프레스
- 자바스크립트
- 프로그래머스JS
- 백준구현문제
- 백준골드
- 안드로이드 스튜디오
- JS프로그래머스
- css기초
- 포이마웹
- 프로그래머스코테
Archives
- Today
- Total
개발새발 로그
[2023-09-21] TIL - 정규표현식 본문
정규표현식
정규표현식의 목적
- 패턴을 이용하여 문자를 검색, 대체, 추출 한다.
- 성능은 느리지만 편함
정규표현식 사이트
정규표현식 표현
정규표현식연습 사이트
http://alf.nu/RegexGolf?world=regex&level=r00
자바스크립트에서 사용하는 방법
const re = new RegExp("ab+c");
const re = /ab+c/;
1. test
const str = 'table football';
const regex = new RegExp('foo*');
const globalRegex = new RegExp('foo*', 'g');
console.log(regex.test(str));
// Expected output: true
- 정규표현식에 해당하는 패턴이 있다면 true를 반환하고 없다면 false
2. exec
- 입력받은 문자열에 찾는 패턴이 있는지 찾은 후 일치한 패턴 정보를 반환하고 없으면 null을 반환한다.
- 문자 추출에 해당한다.
const regex1 = RegExp('foo*', 'g');
const str1 = 'table football, foosball';
let array1;
while ((array1 = regex1.exec(str1)) !== null) {
console.log(`Found ${array1[0]}. Next starts at ${regex1.lastIndex}.`);
// Expected output: "Found foo. Next starts at 9."
// Expected output: "Found foo. Next starts at 19."
}
3. match
- exec와 동일하다.
const re = /[abc]/y;
for (let i = 0; i < 5; i++) {
console.log("abc".match(re), re.lastIndex);
}
// [ 'a' ] 1
// [ 'b' ] 2
// [ 'c' ] 3
// null 0
// [ 'a' ] 1
4. matchAll
- 매칭된 모든 케이스를 반환한다.
const regexp = /[a-c]/g;
regexp.lastIndex = 1;
const str = "abc";
Array.from(str.matchAll(regexp), (m) => `${regexp.lastIndex} ${m[0]}`);
// [ "1 b", "1 c" ]
5. replace
- 일치한 패턴 정보를 원하는 문자열로 바꿀 수 있다.
- 모두 변경하고 싶다면 플래그에 g를 입력하면 된다.
const re = /a/y;
for (let i = 0; i < 5; i++) {
console.log("aaa".replace(re, "b"), re.lastIndex);
}
// baa 1
// aba 2
// aab 3
// aaa 0
// baa 1
6. search
- 일치한 패턴 정보의 위치를 반환한다.
- 무조건 처음 발견한 정보만을 반환한다.
const re = /[abc]/g;
re.lastIndex = 2;
console.log("abc".search(re)); // 0
const re2 = /[bc]/y;
re2.lastIndex = 1;
console.log("abc".search(re2)); // -1
console.log("abc".match(re2)); // [ 'b' ]
7. capture
- 캡처가 적용된 정규표현식을 이용하면 match 반환값의 1번 인덱스부터 순차적으로 캡처 결과가 들어간다.
'javascript'.replace(/(java)(script)/, `$2-$1`) // script-java
Run-length-encoding
- 매우 간단한 비손실 압축 방법
- "AAAAAABBBDFFFFFFFKK" 문자열을 어떻게 압축할 것인가
-> "6A3B1D7F2K" 로 압축해야한다.
const raw = "AAAAAABBBDFFFFFFFKK"
const regExp = /(.)\1*/G;
const result = raw.match(regExp).reduce((a,b)=> a+ `${b.length}${b.slice(0, 1)}`,"");
console.log(result) //"6A3B1D7F2K"
728x90
반응형
LIST
'TIL' 카테고리의 다른 글
[2023-09-22] TIL - 시간 복잡도 (0) | 2023.09.22 |
---|---|
[2023-09-21] TIL - 쿠키와 세션, 웹 스토리지 (0) | 2023.09.21 |
[2023-09-21] TIL - 모듈 (0) | 2023.09.21 |
[2023-09-21] TIL - Event Loop(Microtask Queue, Animation Frame) (0) | 2023.09.21 |
[2023-09-21] TIL - 객체지향과 프로토타입 (0) | 2023.09.21 |