Java에서 정규 표현식 또는 Regex(줄여서)는 Java에서 문자열을 검색, 조작 및 편집하는 데 사용할 수 있는 문자열 패턴을 정의하기 위한 API입니다. 이메일 확인 및 비밀번호는 제약 조건을 정의하기 위해 Regex가 널리 사용되는 문자열의 몇 가지 영역입니다. Java의 정규식은 다음에서 제공됩니다. java.util.regex 패키지. 이는 다음으로 구성됩니다. 클래스 3개와 인터페이스 1개 . 그만큼 java.util.regex 패키지는 기본적으로 아래 표 형식으로 설명된 다음 세 가지 클래스로 구성됩니다.
정규식 클래스 및 인터페이스
Java의 Regex는 다음과 같은 3개의 클래스와 1개의 인터페이스를 제공합니다.
- 패턴 클래스
- 매처 클래스
- PatternSyntaxException 클래스
- 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>
결론
마지막으로, 위 기사에서 검색된 몇 가지 중요한 관찰 내용을 논의하겠습니다.
- Pattern.compile()을 호출하여 패턴 객체를 생성합니다. 생성자는 없습니다. compile()은 Pattern 클래스의 정적 메서드입니다.
- 위와 같이 Pattern 클래스의 객체에 matcher()를 사용하여 Matcher 객체를 생성합니다.
- Pattern.matches()는 주어진 텍스트 전체가 패턴과 일치하는지 여부를 확인하는 데 사용되는 정적 메서드이기도 합니다.
- find()는 텍스트에서 여러 패턴을 찾는 데 사용됩니다.
- 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>