프로그램/JAVA

[Regex] JAVA 정규식표현 사용하기

프뚜 2023. 1. 4. 10:00
728x90
반응형
SMALL

안녕하세요! 프뚜입니다.

 

개발을 하면서 정규표현은 어렵기 때문에 많은 관심을 갖지 않았던 것 같습니다.. 하지만, 정규표현식을 잘 써야 멋진 개발자가 될 수 있다고 생각합니다.


[개발 환경]

 - OS: Windows 10 64bit

 - JAVA: 1.8


# Pattern Class 생성하기

Pattern pattern = Pattern.compile("정규식표현");

다양한 메서드를 지원하고 있지만, compile 메서드를 가장 많이 사용하기 때문에 compile을 사용하겠습니다.


# Matcher Class 생성하기

Matcher matcher = pattern.matcher("정규식표현에 체크 될 데이터");

다양한 메서드를 지원하고 있기 때문에 상황에 맞춰서 사용하면 됩니다. 저는 가장 많이 사용하는 matches()를 사용하겠습니다.


# 정규표현식 문법


# 자주 사용하는 정규표현식


# 다양한 테스트 하기

// 2022.12.23[프뚜]: 숫자 허용 패턴
String patternValue = "^[0-9]*$";
Pattern pattern = Pattern.compile(patternValue);
String value1 = "a13c69d";
String value2 = "013679";

// 2022.12.23[프뚜]: 패턴에 적합한지 확인
Matcher matcher = pattern.matcher(value1);
System.out.println(matcher.matches());

matcher = pattern.matcher(value2);
System.out.println(matcher.matches());

// 2022.12.23[프뚜]: String Class 제공하는 matches
value1.matches(patternValue);
value2.matches(patternValue);

# Path Filter 구현하기

// 2022.12.23[프뚜]: 아스테리크(*) 1개
String asterisk = "([^/]+)";

// 2022.12.23[프뚜]: 아스테리크(*) 2개
String doubleAsterisk = "(.+)";

String pattern = "/users/*/man/**/name"
        .replaceAll("[*][*]", doubleAsterisk)
        .replaceAll("[*]", asterisk);
String path = "/users/?/man/?/.../name";

boolean result = Pattern.matches(pattern, path);

자세한 내용은 소스코드를 통해 확인해보실 수 있습니다. (제목과 Git Comment는 같습니다.)

https://github.com/JeongSeongSoo/spring-tistory

 

GitHub - JeongSeongSoo/spring-tistory

Contribute to JeongSeongSoo/spring-tistory development by creating an account on GitHub.

github.com

 

 

https://regex101.com/r/jN2fU8/1

 

regex101: build, test, and debug regex

Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET.

regex101.com

728x90
반응형
LIST