티스토리

운클라우드
Wooncloud Blog
운클라우드
  • 분류 전체보기
    • 이야기
      • 일기
      • 개발일지
      • 제품 리뷰
      • 기타
    • 정보
      • 유용한 사이트
    • 개발 아카이브
      • HTML, CSS
      • Javascript
      • SVELTEKIT
      • Node Js
      • JAVA
      • Spring
      • 코드 저장소
      • 라이브러리
      • 개발 관련 지식
      • AWS, Cloud, Server
      • DATABASE
    • 스터디
      • 정보처리기사
      • 친절한 SQL 튜닝 스터디

블로그 메뉴

  • 홈
  • 방명록
  • 운구름 웹
  • 벨로그
  • 깃허브
  • 리틀리
  • 도시부엉

인기 글

최근 글

태그

  • CSS
  • 이클립스
  • SQL
  • 스터디
  • 리뷰
  • API
  • TurboFan
  • 자바
  • 라이브러리
  • html
  • 마크다운
  • 폰트
  • 튜닝
  • javascript
  • 정보처리기사
  • 회고
  • Java
  • 자바스크립트
  • 웹디자인
  • 코드저장소
전체 방문자
오늘
어제
hELLO · Designed By 정상우.
운클라우드

Wooncloud Blog

정규표현식 문법 공부하기
개발 아카이브/코드 저장소

정규표현식 문법 공부하기

2021. 9. 30. 00:07
반응형

본 포스트는 프로그래머스 정규표현식 강의를 참조하여 정리한 글입니다.
그래서 프로그래머스 강의에서 나오는 예제 코드와 같습니다.

https://programmers.co.kr/learn/courses/11

정규표현식 문법

\d 숫자를 대표하는 글자들(d 는 digit의 약자)
\D 숫자를 제외한 문자
\w 글자를 대표하는 글자들 (w는 word의 약자)
\W 글자 대표 문자를 제외한 글자들 (특수문자, 공백 등)
\s 공백 문자 (스페이스, 탭, 뉴라인)
\S 공백 문자를 제외한 문자
+ '하나 혹은 그 이상 연결된' 라는 뜻. - \d+ : 연결된 숫자들만 ['02', '123', '4567', '070', '9999', '9999', '010', '2454', '3457'] - \w+ : 연결된 글자들만 (숫자도 글자로 포함) ['Luke', 'Skywarker', '02', '123', '4567', 'luke', 'daum', 'net', '다스베이더', '070', '9999', '9999', 'darth_vader', 'gmail', 'com', 'princess', 'leia', '010', '2454', '3457', 'leia', 'gmail', 'com']
* '0개 이상이다' 라는 뜻.
^ 문자열의 시작
$ 문자열의 종료
. 임의의 한 문자의 자리수를 표현
? '있거나 없거나' 라는 뜻 - -? 는 -가 있거나 없거나 ⇒ 전화번호 사이에 -가 포함되거나 포함안된 글자 찾을 수 있음.
[] '괄호에 있는 글자들 중에 하나' - 위의 -?는 -가 있거나 없거나 / [- ]는 -거나 공백이거나 둘중 하나면 ok
[n-m] 'n부터 m까지 글자를 모두 선택해라' - [가-힣] : 한글 모두 선택 (ㄱ,ㄴ,ㄷ or ㅏ,ㅑ,ㅓ 처럼 낱글자는 찾을 수 없다.) - [a-z] : a부터 z까지 선택
{n} 'n번 반복한다.' - \d{2} : 숫자가 연속 2번 나온다.
{n,m**}** 'n번에서 m번만큼 반복한다.'
() 그룹을 표현함. 괄호 안에 들어가는 내용들은 그룹이 된다.

Flag

g Global의 약자. 문자열에 모든 패턴들을 검색함
i Ignore case의 약자. 문자열에 대소문자를 식별하지 않음
m multi line의 약자. 문자열에 라인이 여러개인 경우에도 검색함.

많이 사용하는 정규표현식

  • 숫자 : [0-9]*
  • 영문자 : [a-zA-Z]*
  • 영어 & 숫자 : [a-zA-Z0-9]*
  • 한글 : [가-힣]*
  • 한글 : [ㄱ-뷁]*
  • 이메일 : [0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,}
  • 전화번호 : 01(?:0|1[6-9])-(?:\d{3}|\d{4})-\d{4}
  • 전화번호 : \d{2,3}-\d{3,4}-\d{4}
  • IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})
  • 주민등록번호 : \d{6} \- [1-4]\d{6}
  • 아이디 (소문자, 소문자,숫자 포함 길이 : 5 ~ 19까지 (최대길이 20))
    [a-z]+[a-z0-9]{5,19}
  • 패스워드 (최소 8 자 및 최대 10 자, 대문자 하나 이상, 소문자 하나, 숫자 하나 및 특수 문자 하나 이상)
    (?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}

자바 정규표현식

Java로 정규 표현식을 다룰 때에는 Pattern 클래스와 Matcher 클래스를 이용합니다.

주의할 점: Java에서는 \ 대신 \\를 적어야 합니다.

\\d, \\w

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));
        }
    }
}

자바 스크립트 정규표현식

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# 정규표현식

using System;
using System.Text.RegularExpressions;

public class RegexTest {
    public static void Main() {
        string regex = "\\w";
        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);
        }
    }
}

정규표현식 관련 사이트

정규표현식 테스트 사이트

https://regexr.com/

정규표현식 도식화 사이트

https://regexper.com/

앞으로 더 추가할 내용이 있다면 포스트를 갱신 할 예정입니다.
피드백 주신다면 확인 후 반영하겠습니다. 감사합니다.

반응형
저작자표시 비영리 변경금지

'개발 아카이브 > 코드 저장소' 카테고리의 다른 글

[Python]NHN 채용 공고 크롤링, 검색, 추출 코드  (0) 2021.08.10
하노이탑 코드 저장  (0) 2020.10.31
[자바스크립트] 날짜 형식 yyyy-MM-dd로 변환  (0) 2020.10.27
[자바스크립트] 날짜에 일수 더하기  (0) 2020.10.15
[자바스크립트] 변수에 빈값인지 체크하기  (0) 2020.10.13
    '개발 아카이브/코드 저장소' 카테고리의 다른 글
    • [Python]NHN 채용 공고 크롤링, 검색, 추출 코드
    • 하노이탑 코드 저장
    • [자바스크립트] 날짜 형식 yyyy-MM-dd로 변환
    • [자바스크립트] 날짜에 일수 더하기

    티스토리툴바