반응형
본 포스트는 프로그래머스 정규표현식 강의를 참조하여 정리한 글입니다.
그래서 프로그래머스 강의에서 나오는 예제 코드와 같습니다.
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);
}
}
}
정규표현식 관련 사이트
정규표현식 테스트 사이트
정규표현식 도식화 사이트
앞으로 더 추가할 내용이 있다면 포스트를 갱신 할 예정입니다.
피드백 주신다면 확인 후 반영하겠습니다. 감사합니다.
반응형
'개발 아카이브 > 코드 저장소' 카테고리의 다른 글
[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 |