>  기사  >  Java  >  자바 정규지식에 대한 자세한 설명

자바 정규지식에 대한 자세한 설명

尚
앞으로
2019-11-29 13:11:332559검색

자바 정규지식에 대한 자세한 설명

표현 의미: (권장: java 비디오 튜토리얼)

1. 문자

x 문자 x. 예를 들어, a는 a

\ 백슬래시 문자를 나타냅니다. 작성시에는 \\.로 적어주세요. (참고: Java는 첫 번째 구문 분석 중에 \\를 정규 표현식\으로 구문 분석하고 두 번째 구문 분석 중에 이를 정규 표현식\으로 구문 분석하기 때문에 1.1의 \를 포함하여 1.1에 나열되지 않은 모든 이스케이프 문자는 다음과 같이 작성해야 합니다. 두 번)

‐CASE_INSENSITIVE: 일치하는 문자는 대소문자를 구분하지 않습니다. 이 플래그는 기본적으로 US ASCII 문자만 고려합니다.

‐UNICODE_CASE: CASE_INSENSITIVE와 결합하면 유니코드 문자 일치를 사용합니다.

‐MULTILINE: ^ 및 $는 전체 입력이 아닌 줄의 시작과 끝과 일치합니다. #🎜 🎜#

‐UNIX_LINES: 여러 줄 모드에서 ^ 및 $를 일치시키면 'n'만 줄 종결자로 처리됩니다.

‐DOTALL: 이 플래그를 사용하면 . 줄 종결자를 포함한 모든 문자

‐CANON_EQ: 유니코드 문자

8, Greedy 수량자

X에 해당하는 표준 문자를 고려하세요. # 🎜🎜#

X* X, 0회 이상

X+, 정확히 n회

X{n,} X, 최소 n회#🎜🎜 #

X{n,m} #

9.Reluctant 수량자

X?? 🎜🎜#X+? X, 한 번 이상

X{n}? 🎜#

X{n,m}? 아니면 한 번도 아니고

X*+ X, 0회 이상

X++ X n번

X{n,}+ X, n번 이상

X{n,m}+

그리디의 차이, Reluctant 및 Possessive는 다음과 같습니다. (퍼지 처리를 수행하는 경우에만 적용 가능합니다.)

greedy 수량자는 퍼지 일치 문자열 전체를 한 번만 읽는 것이 처음이므로 "탐욕적"으로 간주됩니다. 첫 번째 일치 시도(전체 입력 문자열)가 실패하면 일치자는 일치된 문자열의 마지막 문자 뒤에서 한 문자를 취소하고 다시 시도합니다. 일치 항목을 찾거나 더 이상 남은 문자가 없을 때까지 이 프로세스를 반복합니다. 후퇴할 수 있습니다. 표현식에 사용된 수량자에 따라 일치를 시도하는 마지막 문자는 1자 또는 0자입니다.

그러나 Reluctant 수량자는 반대 접근 방식을 취합니다. 즉, 일치하는 문자열의 시작 부분에서 시작한 다음 한 번에 한 문자씩 점진적으로 읽어 일치 항목을 검색합니다. 일치시키려는 마지막 항목은 전체 입력 문자열입니다.

마지막으로 소유 한정자는 항상 전체 입력 문자열을 읽고 하나의 일치 항목을 시도합니다. 탐욕스러운 수량자와 달리 소유격은 결코 후퇴하지 않습니다.

11. 논리 연산자

XY X 다음에 Y

X|Y가 캡처 그룹으로 사용됩니다. 예를 들어 (abc)는 abc를 전체적으로 캡처하는 것을 의미합니다.

12, 역참조

n 일치하는 n번째 캡처 그룹

capture 그룹은 숫자를 사용할 수 있습니다. 여는 괄호를 왼쪽에서 오른쪽으로 세어 번호가 매겨집니다. 예를 들어, ((A)(B(C))) 표현식에는 다음과 같은 4개의 그룹이 있습니다.

1 ((A)(B(C)))

# 🎜 🎜#2 A

3 (B(C))

4 (C)

표현식에서 n은 해당 일치하는 데 사용될 수 있습니다. 예를 들어 (ab)341은 ab34ab를 의미하고, (ab)34(cd)12는 ab34cdabcd를 의미합니다.

13, Quote

아무것도 없지만 다음 문자를 인용합니다.

Q 아무것도 없지만 E까지 모든 문자를 인용합니다. QE 사이의 문자열은 변경되지 않고 사용됩니다(1.1의 이스케이프 문자 제외). 예를 들어 ab\Q{|}\\E

은 ab{|}\

E와 일치할 수 있지만 Q

14에서 시작하는 참조로 끝납니다. . 특수 구조(비캡처)

(?:X) 예: (?i)abc(?-i)def 표현식 이때 (?i)는 대소문자 구분 스위치를 켜고 abc는

idmsux 설명은 다음과 같습니다. #🎜 🎜##🎜🎜 #‐i CASE_INSENSITIVE :US-ASCII 문자 집합은 대소문자를 구분하지 않습니다. (?i)

‐d UNIX_LINES: UNIX 줄 바꿈 켜기

‐m MULTILINE:여러 줄 모드(?m)

UNIX 줄 바꿈 동작 n

WINDOWS 전환 동작 rn(?s)

‐u UNICODE_CASE: 유니코드는 대소문자를 구분하지 않습니다. (?u)

‐x 주석: 패턴에서 주석을 사용할 수 있고, 패턴에서 공백을 무시하고, 끝까지 "#"을 사용합니다(# 다음에 주석이 옵니다). (?x) 예를 들어 (?x)abc#asfsdadsa는 abc


(?idmsux-idmsux:X) X 문자열을 지정된 플래그 on-off를 사용하여 비캡처 그룹으로 일치시킬 수 있습니다. 위와 유사하게 위 표현식은 (?i:abc)def 또는 (?i)abc(?-i:def)

(?=X) X, Pass로 다시 작성할 수 있습니다. 너비가 0인 긍정적인 예측. 너비가 0인 긍정적 예측 어설션은 하위 표현식 X가 이 위치의 오른쪽과 일치하는 경우에만 일치를 계속합니다. 예를 들어, w+(?=d)는 문자 뒤에 숫자가 오는 것을 의미하지만 너비가 0인 부정 예측을 통해 숫자(역추적 없음)

(?!X) X를 캡처하지 않습니다. 너비가 0인 부정 예측 어설션. 하위 표현식 X가 이 위치의 오른쪽과 일치하지 않는 경우에만 일치를 계속합니다. 예를 들어 w+(?!d)는 문자 뒤에 숫자가 오지 않으며 숫자가 캡처되지 않음을 의미합니다.

(? (? (?>X) 차이점은 (?> 표현식이 a(?>b|bc)일 때 일치할 수 없다는 것입니다. 왜냐하면 후자가 b와 일치할 때이기 때문입니다. , 이미 일치된 그룹이기 때문에 비캡처 그룹에서 빠져나오며, 해당 그룹에 속한 문자는 다시 일치되지 않습니다.

더 많은 자바 지식을 원하시면

javaBasic Tutorial

열을 따르세요.

위 내용은 자바 정규지식에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 aizhan에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제