이 기사에서는 Java의 정기적 인 서라운드 시청 및 역 참조 기능의 기능과 사용에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
보기 주위
1. 개념을 둘러싼
제로 너비 어설 션이라고도 알려진 주위를 둘러 보면서 약자를 약화했습니다.
서라운드 뷰는 위치 (전면 또는 후면)를 강조하고 서라운드 뷰 표현식은 성공하기 위해 일치해야합니다.
서라운드 시청은 위치에 가상 추가를위한 추가 판단 조건으로 간주 될 수 있으며 정기적 인 일치 문자를 소비하지 않습니다.
2. 기본 표현을 둘러 보는 것
(? = expression) 순서는 양수이며 식은 위치의 오른쪽에 일치 할 수 있습니다.
(?! expression) 주변 시야의 순서 부정은 위치의 오른쪽이 표현식과 일치 할 수 없음을 의미합니다.
(? <= expression) 리버스 순서는 긍정적으로 둘러 보며 위치의 왼쪽이 표현식과 일치 할 수 있음을 나타냅니다.
(? <! expression) 리버스 순서는 주변 뷰를 무효화하여 위치의 왼쪽이 표현식과 일치 할 수 없음을 나타냅니다.
참고 : 순서 (=) 일치의 오른쪽은 순차 서라운드보기보다 더 <더 <입니다.
JavaScript는 순차적 서라운드보기 만 지원하지만 역 서라운드보기를 지원하지 않습니다.
순차적 서라운드 뷰와 역 순서 서라운드 뷰는 모두 Java에서 지원되지만 역 차수 서라운드 뷰는 길이 결정과 함께 표현식 만 지원합니다. 반전 서라운드 뷰에서 정량화 자만지지합니까? 그리고 길이가 불확실한 다른 정량자를지지하지 마십시오.
3. 예제를 사용하십시오
3.1. 시퀀스 확인 및 주변 (? = 표현)
3.1.1. 접미사 ".txt"의 끝과 접미사없이 파일 이름을 일치시킵니다.
【.+(? =/. txt)】
텍스트:
txtfile.txt
Exefile.exe
inifile.ini
일치 결과 : txtfile
3.1.2. 비밀번호 일치 (문자가 포함되어 있어야합니다 (케이스 insensitive), 숫자, 6-16 자리)
【^(? =.*? [a-za-z]) (? =.*?
(? =.*? [a-za-z]) 다음 문자에서 적어도 하나의 문자를 정의하고 (? =.*? [0-9]) 다음 문자에서 적어도 하나의 숫자를 정의하고 실제로 일반 [a-za-z0-9] {6,16}을 일치시켜 정량화자를 정의합니다.
3.2. 서라운드 뷰의 시퀀스 부정 (?! expression)
3.2.1. <a> </a> 이외의 태그를 일치시킵니다
【<(?!/? a/b) [^<]+?>】
텍스트 : <a> <a1> </a> zxiaofan <div> com </d> iv> cc
일치 결과 :
<A1>
<div>
</d>
3.2.2. 접미사 끝에서 ".txt"가 아닌 접미어와 파일 이름을 일치시킵니다.
【.+ (?!/. txt)】 표현 오류.+는 지정된 위치가없고 탐욕스러운 일치이기 때문입니다. (So.+는 txtfile.txt와 직접 일치 할 수 있습니다)
【(.+) (?!/. txt)/. [^.]+$】
텍스트:
txtfile.txt
Exefile.exe
inifile.ini
일치 결과 :
Exefile.exe
inifile.ini
3.3. 주변의 역순 긍정 (? <= expression)
3.3.1. 지정된 태그 사이의 내용을 일치시킵니다
【(? <= <div>) [^<]+(? = </div>)】
텍스트 : <div> zxiaofan.com </div>
일치 결과 : zxiaofan.com
3.3.2. 지정된 매개 변수의 값을 얻으십시오
【(? <= name =).+】
텍스트:
이름 = zxiaofan
나이 = 20
레벨 = 6
일치 결과 : zxiaofan
3.4. 서라운드 뷰의 역 순서 부정 (? <! expression)
3.4.1. 지정되지 않은 매개 변수의 값을 얻으십시오
【^^[^=#]+= (? <! name =).+$】
텍스트:
이름 = zxiaofan
나이 = 20
레벨 = 6
#섹스 = 1
일치 결과 :
나이 = 20
레벨 = 6
4. 포괄적 인 예
4.1. 문자, 숫자 및 특수 문자를 포함해야합니다
【^(? =.*? [a-za-z]) (? =.*?/d) (?!
설명 : ^(? =.*? [a-za-z]) 제한은 문자가 있어야합니다. (? =.*?/d) 한계는 숫자를 가져야합니다. (?! [a-za-z/d]+$) 한계는 모든 숫자와 문자 일 수 없습니다.
4.2. 기본 도메인 이름과 일치합니다 (최상위 도메인 이름과 일치)
【(? <= (? :: // w {0,50}/.)?)
텍스트:
vip.zxiaofan.com.cn
http://zxiaofan.com/123
www.zxiaofan.org.cn
일치 결과 :
zxiaofan.com.cn
zxiaofan.com
zxiaofan.org.cn
참고 : [? :] 일치하는 텍스트를 자동으로 명명 된 그룹에 캡처하지 않으며이 그룹에 그룹을 할당하지도 않습니다. (제거 후 결과에 영향을 미치지 않습니다)
특별 도메인 이름 : Wanwang www.net.cn
4.3. 5 연속 휴대 전화 번호와 일치합니다
【1 [34578]/d {3} (/d) (?!/1 {1}) (/d)/2 {4}】
텍스트:
18328501111
183285111111
18328551111
183281111111
일치 결과 :
183285111111
Note1 :/1은 첫 번째 내용 세트와 일치합니다
참고 2 : (?!/1 {1}) 필터 6 연속 숫자
뒷면 references
1. 역전 개념
캡처 그룹 : () 하위 표현에 따라 여러 그룹으로 나뉩니다. 나타나는 각 쌍의 ()가 캡처 그룹입니다. 엔진은 캡처 그룹의 번호가 매겨지고 번호 규칙은 왼쪽 브래킷입니다 (1부터 시작하여 왼쪽에서 오른쪽으로 발생 순서.
캡처 그룹 이름 지정 :
(? <name> exp) exp를 일치시키고 텍스트를 이름이라는 이름의 그룹으로 캡처합니다.
(? : exp) match exp, 일치하는 텍스트를 자동으로 명명 된 그룹에 캡처하지 않으며이 그룹에 그룹 번호를 할당하지도 않습니다.
역전 :
/1은 첫 번째 그룹 (ABC)을 의미합니다. /2는 두 번째 그룹을 의미합니다.
/k <lord> : 지정된 이름을 가진 그룹을 나타냅니다.
2. 예제를 사용하십시오
2.1. 파일 이름을 같은 시작 및 끝과 일치시킵니다.
【([az] {3}) [az]+/./1 {1}】
텍스트:
txtfile.txt
exefile.txt
fileini.ini
일치 결과 :
txtfile.txt
참고 : ([az] {3})는 첫 번째 그룹이고 /1 {1}은 첫 번째 그룹을 한 번 언급하는 것을 의미합니다 (여기에서 /1 {3}로 쓸 수 없습니다).
추신 : 참조를위한 매우 편리한 정규 표현 도구는 다음과 같습니다.
자바 스크립트 정규 표현 온라인 테스트 도구 :
http://tools.vevb.com/regex/javaScript
정규 표현 온라인 세대 도구 :
http://tools.vevb.com/regex/create_reg
Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 정규 표현 기술", "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Skills", "Java 파일 및 디렉토리 운영 기술 요약"및 "Java Cache 운영 기술 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.