정규식은 텍스트(Java의 문자열)에 적용할 수 있는 일종의 패턴입니다. Java는 정규식 일치를 위해 java.util.regex 패키지를 제공합니다. 정규식은 Perl 프로그래밍 언어와 매우 유사하며 배우기가 매우 쉽습니다. 정규식은 텍스트(텍스트의 일부)와 일치하거나 일치하지 않습니다. * 정규식이 텍스트와 일치하면 찾을 수 있습니다. ** 정규식이 복합형인 경우 정규식의 어느 부분이 텍스트의 어느 부분과 일치하는지 쉽게 파악할 수 있습니다.
첫 번째 예
정규식 "[a-z] +
"은 텍스트의 모든 소문자와 일치합니다. 에서 포함된 [a-z]
문자를 의미하며 "하나 이상의" 문자를 의미합니다. "code 2 learn java tutorial"이라는 문자열을 제공한다고 가정해 보겠습니다. Java에서 이를 수행하는 방법 먼저 템플릿을 생성해야 합니다. a
z
+
import java.util.regex.*;
Pattern p = Pattern.compile(“[a-z]+”);
matcher
다음으로 다이어그램에 메시지를 보내 텍스트를 생성해야 합니다 .
Matcher m = p.matcher(“code 2 learn java tutorial”);
참고:Pattern
생성자 도 없으며 Matcher
클래스 메서드를 사용하여 생성합니다 Pattern
. Pattern Class:
클래스 객체는 정규 표현식의 표현을 구성합니다. Pattern 클래스는 공개 생성자를 제공하지 않습니다. 템플릿을 만들려면 먼저 공용 정적 메서드 중 하나를 호출해야 합니다. 그런 다음 클래스의 개체를 반환합니다 Pattern
. 이러한 메서드는 정규식을 인수로 사용합니다. Matcher Class:
Finder 개체는 패턴을 해석하고 입력 문자열에 대해 일치 작업을 수행하는 엔진입니다. Pattern
클래스와 마찬가지로 Matcher
공개 생성자가 없습니다. 클래스 객체에 대한 Matcher
메소드를 호출하여 객체를 얻습니다 . 이러한 단계를 완료하고 이제 클래스의 인스턴스를 갖게 되면 이제 패턴이 발견되었는지 여부와 발견된 경우 어떤 위치에 있는지 등을 확인할 수 있습니다. 패턴이 전체 문자열과 일치하면 true를 반환하고 그렇지 않으면 false를 반환합니다. 패턴이 문자열의 시작 부분과 일치하면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 패턴이 텍스트의 일부와 일치하면 true를 반환합니다. matcher
Pattern
Matcher m
m.matches()
m.lookingAt()
m.find ()
그 밖에 읽을 내용: |
---|
일치하는 항목 찾기
일치에 성공한 후 m.start()는 일치된 첫 번째 문자의 인덱스를 반환하고 m.end()는 일치된 마지막 문자의 인덱스에 1을 더한 값을 반환합니다. 시도가 실패하고 일치하는 항목이 발견되지 않으면m.start()
해당 항목을 m.end()
던집니다 .IllegalStateException
- 이렇게 하면
RuntimeException
잡을 필요가 없습니다.
m.end()
있지만 이것이 바로 대부분의 String
.
- 예를 들어,
“Now is the time“.substring(m.start(), m.end())
import java.util.regex.*;
public class RegexTest {
public static void main(String args[]) {
String pattern = "[a-z]+";
String text = "code 2 learn java tutorial";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);
while(m.find()) {
System.out.print(text.substring(m.start(), m.end()) + "*");
}
}
}
Output: code*learn*java*tutorial*
추가 방법
일치하는 항목이 있으면 다음을 수행합니다.m.replaceFirst(replacement)
패턴과 일치하는 첫 번째 하위 문자열이 다음으로 대체되는 새 문자열을 반환합니다.replacement
m.replaceAll(replacement)
패턴과 일치하는 각 하위 문자열이 대체되는 새 문자열을 반환합니다.m.find(StartIndex)
지정된 인덱스에서 시작하여 다음 일치 항목을 찾습니다.m.reset()
템플릿을 재설정합니다.m.reset(NewText)
파인더를 재설정하고 새 텍스트를 제공합니다(아마도String
또는StringBuffer
)CharBuffer
.
정규식 구문
^
줄의 시작 부분과 일치합니다.$
문자열의 끝과 일치합니다..
개행 문자를 제외한 모든 단일 문자와 일치합니다. m 옵션을 사용하면 개행 문자와 일치할 수 있습니다.[...]
괄호 안의 단일 문자와 일치합니다.[^ ...]
괄호 안에 있지 않은 모든 단일 문자와 일치합니다.\A
전체 라인을 시작하십시오.\z
전체 줄의 끝입니다.\Z
마지막 줄 종결자를 제외한 전체 줄의 끝입니다.re*
이전 표현식이 0개 이상 일치합니다.re+
이전 표현식과 하나 이상 일치합니다.re?
0 또는 1을 이전 표현식의 위치와 일치시킵니다.re{n}
정확히 일치합니다. N 이전 표현식의 발생 횟수입니다.re{n,}
N개 이상의 이전 표현식과 일치합니다.re{n, m}
이전 표현식의 n개 이상, 최대 m개 항목과 일치합니다.a|b
a 또는 b와 일치합니다.(re)
정규식 그룹과 발견된 텍스트를 기억합니다.(?: re)
발견된 텍스트를 기억하지 못하는 정규식 그룹입니다.(?> re)
반환값이 없는 독립 패턴과 일치합니다.\w
문자 및 숫자[a-zA-Z_0-9]와 일치합니다.\W
문자나 숫자가 아닙니다.\s
공백과 일치합니다. [\t\n\r\f]와 동일합니다.\S
공백 문자가 아닙니다.\d
숫자와 일치합니다. [0-9]와 동일합니다.\D
숫자가 일치하지 않습니다.\G
마지막 경기의 포인트와 일치합니다.\n
개행과 일치합니다.\b
단어 경계에서 일치합니다.\B
단어 경계에 일치하지 않습니다.\n, \t, etc.
개행, 캐리지 리턴, 탭 등의 문자.\Q
\E 앞의 모든 문자를 인용합니다.\E
\Q로 시작하는 인용문은 끝납니다.
GO TO FULL VERSION