logo

Java의 정규 표현식

Java에서 정규 표현식 또는 Regex(줄여서)는 Java에서 문자열을 검색, 조작 및 편집하는 데 사용할 수 있는 문자열 패턴을 정의하기 위한 API입니다. 이메일 확인 및 비밀번호는 제약 조건을 정의하기 위해 Regex가 널리 사용되는 문자열의 몇 가지 영역입니다. Java의 정규식은 다음에서 제공됩니다. java.util.regex 패키지. 이는 다음으로 구성됩니다. 클래스 3개와 인터페이스 1개 . 그만큼 java.util.regex 패키지는 기본적으로 아래 표 형식으로 설명된 다음 세 가지 클래스로 구성됩니다.

정규식 클래스 및 인터페이스

Java의 Regex는 다음과 같은 3개의 클래스와 1개의 인터페이스를 제공합니다.



  1. 패턴 클래스
  2. 매처 클래스
  3. PatternSyntaxException 클래스
  4. MatchResult 인터페이스

아래 제공된 이미지를 통해 더 많은 이해를 얻을 수 있습니다.

예 아니오. 클래스/인터페이스 설명
1. 패턴 클래스 패턴을 정의하는 데 사용됩니다.
2. 매처 클래스 패턴을 사용하여 텍스트에 대한 일치 작업을 수행하는 데 사용됩니다.
삼. PatternSyntaxException 클래스 정규식 패턴에서 구문 오류를 나타내는 데 사용됩니다.
4. MatchResult 인터페이스 일치 작업의 결과를 나타내는 데 사용됩니다.

패턴 클래스

이 클래스는 다양한 유형의 패턴을 정의하는 데 사용할 수 있는 정규식의 컴파일이며 공용 생성자를 제공하지 않습니다. 이는 정규식을 첫 번째 인수로 받아들이고 실행 후 패턴을 반환하는 compile() 메서드를 호출하여 생성할 수 있습니다.



예 아니오. 방법 설명
1. 컴파일(문자열 정규식) 주어진 정규식을 패턴으로 컴파일하는 데 사용됩니다.
2. 컴파일(문자열 정규식, 정수 플래그) 주어진 정규식을 주어진 플래그가 있는 패턴으로 컴파일하는 데 사용됩니다.
삼. 플래그() 이 패턴의 일치 플래그를 반환하는 데 사용됩니다.
4. matcher(CharSequence 입력) 이 패턴에 대해 주어진 입력을 일치시키는 매처를 생성하는 데 사용됩니다.
5. 일치(문자열 정규식, CharSequence 입력) 주어진 정규식을 컴파일하고 주어진 입력을 일치시키려고 시도하는 데 사용됩니다.
6. 무늬() 이 패턴이 컴파일된 정규식을 반환하는 데 사용됩니다.
7. quote(문자열 s) 지정된 문자열에 대한 리터럴 패턴 문자열을 반환하는 데 사용됩니다.
8. 분할(CharSequence 입력) 이 패턴과 일치하는 항목을 중심으로 주어진 입력 시퀀스를 분할하는 데 사용됩니다.
9. Split(CharSequence 입력, int 제한) 이 패턴과 일치하는 항목을 중심으로 주어진 입력 시퀀스를 분할하는 데 사용됩니다. 제한 매개변수는 패턴이 적용되는 횟수를 제어합니다.
10. toString() 이 패턴의 문자열 표현을 반환하는 데 사용됩니다.

예: 패턴 수업

자바






// Java Program Demonstrating Working of matches() Method> // Pattern class> // Importing Pattern class from java.util.regex package> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Following line prints 'true' because the whole> >// text 'geeksforgeeks' matches pattern> >// 'geeksforge*ks'> >System.out.println(Pattern.matches(> >'geeksforge*ks'>,>'geeksforgeeks'>));> >// Following line prints 'false' because the whole> >// text 'geeksfor' doesn't match pattern 'g*geeks*'> >System.out.println(> >Pattern.matches(>'g*geeks*'>,>'geeksfor'>));> >}> }>

>

이런 개념
>

산출

true false>

매처 클래스

이 객체는 Java에서 입력 문자열에 대한 일치 작업을 수행하여 이전에 설명한 패턴을 해석하는 데 사용됩니다. 이것도 공개 생성자를 정의하지 않습니다. 이는 임의의 패턴 객체에 대해 matcher()를 호출하여 구현할 수 있습니다.

예 아니오. 방법 설명
1. 찾다() 주로 텍스트에서 정규식을 여러 번 검색하는 데 사용됩니다.
2. 찾기(int 시작) 주어진 인덱스부터 시작하는 텍스트에서 정규식의 발생을 검색하는 데 사용됩니다.
삼. 시작() find() 메소드를 사용하여 찾은 일치 항목의 시작 인덱스를 가져오는 데 사용됩니다.
4. 끝() find() 메소드를 사용하여 찾은 일치 항목의 끝 색인을 가져오는 데 사용됩니다. 마지막으로 일치하는 문자 옆에 있는 문자의 인덱스를 반환합니다.
5. 그룹카운트() 일치하는 하위 시퀀스의 총 개수를 찾는 데 사용됩니다.
6. 그룹() 일치하는 하위 시퀀스를 찾는 데 사용됩니다.
7. 성냥() 정규식이 패턴과 일치하는지 테스트하는 데 사용됩니다.

메모: T Pattern.matches()는 전체 텍스트가 패턴과 일치하는지 확인합니다. 다른 방법(아래 설명)은 주로 텍스트에서 여러 패턴을 찾는 데 사용됩니다.

Pattern 클래스에서 했던 것처럼 몇 가지 샘플 프로그램에 대해 논의해 보겠습니다. 여기에서는 Matcher 클래스를 더 잘 이해하기 위해 compile(), find(), start(), end() 및 Split()의 작동을 보여주는 몇 가지 Java 프로그램에 대해 논의할 것입니다.

예시 1: 패턴 검색

자바




// Java program to demonstrate working of> // String matching in Java> // Importing Matcher and Pattern class> import> java.util.regex.Matcher;> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Create a pattern to be searched> >// Custom pattern> >Pattern pattern = Pattern.compile(>'geeks'>);> >// Search above pattern in 'techcodeview.com>

설명

[xyz]

x,y 또는 z

[^xyz]

x,y 또는 z 이외의 모든 문자

[a-zA-Z]

a~z 또는 A~Z 범위의 문자입니다.

[a-f[m-t]]

a와 f, m과 t의 합집합.

[a-z && p-y]

두 범위 사이의 모든 요소 범위가 교차합니다.

[az && [^bc]]

b와 c를 제외한 a에서 z까지의 합집합

[az && [^m-p]]

m부터 p까지의 범위를 제외한 a부터 z까지의 합집합

다음은 위 주제의 구현입니다.

자바




// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if the element is range a to z or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]'>,>'Gfg'>));> >}> }>

>

>

산출

true false>

정규식 메타문자

정규식

설명

엑스?

X가 한 번 표시되는지 여부

X+

X가 한 번 이상 나타납니다.

엑스*

X는 0으로 나타나거나 한 번도 나타나지 않습니다.

X{n}

X가 n번 나타남

X{n,}

X가 n번 이상 나타남

X{n,m}

X는 n배보다 크고 m배보다 작게 나타납니다.

다음은 정규식 메타문자의 구현입니다.

자바




// Java Program to check on regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checking all the strings using regex> >System.out.println(Pattern.matches(>'[b-z]?'>,>'a'>));> >// Check if all the elements are in range a to z> >// or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]+'>,>'GfgTestCase'>));> >// Check if elements is not in range a to z> >System.out.println(Pattern.matches(>'[^a-z]?'>,>'g'>));> >// Check if all the elements are either g,e,k or s> >System.out.println(> >Pattern.matches(>'[geks]*'>,>'geeksgeeks'>));> >}> }>

>

>

산출

false true false true>

Java 정규식 찾기 예

정규식

설명

.

모든 문자

모든 숫자, [0-9]

숫자가 아닌 모든 것, [^0-9]

에스

공백 문자, [ x0Bf ]

에스

공백이 아닌 문자, [^s]

안에

단어 문자, [a-zA-Z_0-9]

안에

단어가 아닌 문자, [^w]

단어 경계

비단어 경계

다음은 Java Regex Finder의 구현입니다.

자바




// Java Program to implement regex> import> java.io.*;> import> java.util.regex.*;> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Check if all elements are numbers> >System.out.println(Pattern.matches(>'d+'>,>'1234'>));> >// Check if all elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'1234'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }>

>

>

산출

true false true true>

결론

마지막으로, 위 기사에서 검색된 몇 가지 중요한 관찰 내용을 논의하겠습니다.

  1. Pattern.compile()을 호출하여 패턴 객체를 생성합니다. 생성자는 없습니다. compile()은 Pattern 클래스의 정적 메서드입니다.
  2. 위와 같이 Pattern 클래스의 객체에 matcher()를 사용하여 Matcher 객체를 생성합니다.
  3. Pattern.matches()는 주어진 텍스트 전체가 패턴과 일치하는지 여부를 확인하는 데 사용되는 정적 메서드이기도 합니다.
  4. find()는 텍스트에서 여러 패턴을 찾는 데 사용됩니다.
  5. Split() 메소드를 사용하여 구분 기호 패턴을 기반으로 텍스트를 분할할 수 있습니다.

Java Regex의 FAQ

Q1. Java의 정규 표현식이란 무엇입니까?

연령:

Java의 정규 표현식은 Java에서 문자열을 검색, 조작 및 편집하는 데 사용할 수 있는 문자열 패턴에 사용됩니다.

Q2. Java 정규식의 간단한 예는 무엇입니까?

연령:

Java 정규식의 간단한 예는 다음과 같습니다.

자바




// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }>

>

>

산출

true true true>