일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- 백준
- programmers
- 웹 프론트엔드
- 프로그래머스스쿨
- DFS
- CSS
- 알고리즘
- DP
- 그래프 탐색
- 프로그래머스
- level2
- 그래프 이론
- 그래프이론
- 너비 우선 탐색
- 정렬
- BASIC
- web
- 그리디 알고리즘
- 브루트포스 알고리즘
- BFS
- 자바스크립트
- 딕셔너리
- 파이썬
- 자료구조
- 스택
- lv2
- 구현
- 다이나믹 프로그래밍
- 문자열
- JavaScript
- Today
- Total
DevLog:-)
정규표현 - [프로그래머스 스쿨] 본문
정규표현식
현재 IOS/안드로이드 앱 내에서는 결제를 지원하지 않습니다.
school.programmers.co.kr
"프로그래머스 스쿨 정규표현식 수강 후 공부한 내용을 정리한 글입니다:D"
정규표현식이란?
문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리할 수 있도록 하는 수단이다.
다음은 파이썬 예제입니다.
1. 대표문자(Meta sequence)
-숫자 대표 문자
\d : 숫자를 대표하는 정규표현식이다.
d는 digit을 뜻한다.
-글자 대표 문자
\w : 글자를 대표하는 정규표현식이다.
'a, b, c, 가, 나, 다, 1, 2'와 같은 문자와 숫자를 포함('_'(언더스코어)는 포함)
파이썬 예제입니다.
2. 횟수 정하기(Quantifier)
-하나 이상
\d+ : 연결된 숫자 표현하고 싶을 때 +사용
-0개 이상
\d* : 숫자가 0개 이상 표현하고 싶을 때 *사용
ex) [1-9]\d* : 자연수 구하기 (처음에 1~9 중 하나의 숫자 나온 다음, 드 뒤에 숫자가 0개 이상 온다.)
-있거나 없거나
? : 있거나 없거나
ex) \d+[-]?:연속된 숫자 뒤에 -있거나 없음
\d+[- ]?\d+[- ]?\d+ ; 연속된 숫자 사이에 '-' 또는 공백이 있거나 없음
-n 번
숫자 반복 횟수 제한하기
{숫자}: 숫자번 반복한다"
ex) \d {2} : 숫자 연속 두 번 나옴
-n~m번
{숫자 1, 숫자 2}는 "숫자 1부터 숫자 2까지 반복한다"는 뜻
ex) \w {2,3} : 문자가 2 ~ 3번 나옴
파이썬 예제입니다.
3. 고르기
- 몇 개 중에 고르기
ex) [aeiou] : 알파벳 중에 소문자 모음(a, e, i, o, u)만 고르기
- 범위에서 고르기
ex) [abcdefghijklmnopqrlstuvwxyz] = [a-z]
- 한글 고르기
ex) '[가-힣]+': #한글 단어
파이썬 예제입니다.
4. 기타 대표 문자
숫자(\d)나 글자(\w) 이외에도 다양한 대표 문자가 있다.
^ | 문자열의 시작 |
$ | 문자열의 끝 |
. | 임의의 한 문자 |
* | 문자가 0번 이상 발생 ( = {0,}) |
+ | 문자가 1번 이상 발생 ( = {1,}) |
? | 문자가 0번 혹은 1번 발생 ( = {0, 1}) |
[ ] | 문자의 집합 범위를 나타냄 [0-9] : 숫자 (0부터 9) [a-z] : 알파벳 (a부터 z) 앞에 ^가 나타나면 not을 의미 |
{ } | 횟수 또는 범위를 의미 {n} : 앞 문자가 n개 {n,} 앞문자가 n개 이상 {n, m}: 앞 문자가 n개 이상, m개 이하 |
( ) | 소괄호 안의 문자를 하나의 문자로 인식 |
| | or 조건 |
\ | 확장 문자의 시작 |
\b | 단어의 경계 |
\B | 단어가 아닌 것의 경계 |
\A | 입력의 시작부분 |
\G | 이전 매치의 끝 |
\Z | 입력의 끝이지만 종결자가 있는 경우 |
\z | 입력의 끝 |
\s | 공백문자 |
\S | 공백문자가 아닌 나머지 문자 |
\w | 알파벳이나 숫자 |
\W | 알파벳이나 숫자를 제외한 문자 |
\d | [0-9]와 동일 |
\D | 숫자를 제외한 모든 문자 |
5. 프로그래밍 언어별 정규표현식
-자바 정규표현식
주의할 점: Java에서는 \ 대신 \\를 적어야 한다.
Python은 raw string을 지원해 대표 문자 1을 표현할 때 역슬래시 \ 를 한 번만 쓸 수 있다.
하지만 자바에서는 escape 때문에 역슬래시를 사용해 역슬래시 \를 두 번 적어야 한다.
import java.io.Console;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class MyRegex{
public static void main(String[] args){
String searchTarget = "Luke Skywarker 02-123-4567 luke@daum.net\n다스베이더 070-9999-9999 darth_vader@gmail.com\nprincess leia 010 2454 3457 leia@gmail.com";
Pattern pattern = Pattern.compile("\\d");
Matcher matcher = pattern.matcher(searchTarget);
while(matcher.find()){
System.out.println(matcher.group(0));
}
}
}
-자바스크립트 정규표현식
Javascript로 정규표현식을 다룰 때에는 String class의 match 함수를 이용할 수 있다.
var searchTarget = "Luke Skywarker 02-123-4567 luke@daum.net\
다스베이더 070-9999-9999 darth_vader@gmail.com\
princess leia 010 2454 3457 leia@gmail.com";
/* 아래 코드의 /와 /g가운데에 정규표현식을 넣으세요.
* g는 global의 약자로, 정규표현식과 일치하는 모든 내용을 찾아오라는 옵션입니다.
*/
var regex = /\d+/g; // 여기에 정규표현식을 입력
console.log(searchTarget.match(regex));
-C#정규표현
C#으로 정규표현식을 다룰 때에는 Regex.matches라는 메서드를 이용한다.
주의할 점: C#에서는 \ 대신 \\를 적어야 한다. (자바와 같은 이유)
using System;
using System.Text.RegularExpressions;
public class RegexTest {
public static void Main() {
string regex = "\\d";
string searchTarget = "Luke Skywarker 02-123-4567 luke@daum.net\n다스베이더 070-9999-9999 darth_vader@gmail.com\nprincess leia 010 2454 3457 leia@gmail.com";
foreach (Match m in Regex.Matches(searchTarget, regex)){
Console.WriteLine(m.Value);
}
}
}
'프론트엔드' 카테고리의 다른 글
자료구조 & 알고리즘(1) (시간 복잡도, 배열, 연결 리스트, 스택) (0) | 2023.09.22 |
---|---|
Networking-[프로그래머스 스쿨]자바스크립트와 웹 프론트엔드(4) (0) | 2023.07.17 |
Event + JS - [프로그래머스 스쿨]자바스크립트와 웹 프론트엔드(3) (0) | 2023.07.14 |
DOM + JS - [프로그래머스 스쿨]자바스크립트와 웹 프론트엔드(2) (0) | 2023.07.11 |
Javascript와 web - [프로그래머스 스쿨] 자바스크립트와 웹 프론트엔드(1) (0) | 2023.07.11 |