정규 표현 식 단언,순시(Assertions),정방 향 단언,역방향 단언 소개

단언(Assertions)은 정규 표현 식 개념 에서 이해 하기 어렵 습 니 다.대상 문자열 의 현재 일치 하 는 위치 에서 테스트 를 하 는 것 을 말 합 니 다.그러나 이 테스트 는 대상 문자열 을 차지 하지 않 습 니 다.즉,대상 문자열 의 현재 일치 하 는 위 치 를 이동 하지 않 습 니 다.상세 하 게 보면 알 수 있 듯 이정규 표현 식 일치 분석 과정 분석(정규 표현 식 일치 원리)안에'0 너비'라 고 언급 된 많은 메타 문 자 는 특수 한 위치 에 만 일치 하 는데 이들 은 단언 으로 이해 할 수 있다.
단언 문자
흔히 볼 수 있 는 단언 문 자 는\b,\B,\A,\Z,\z,^,$이다.
문자
의미(위 에 위치 문자열 로 설명)
^
줄 의 첫머리,문자열 의 첫머리 는 위치 0 을 나타 낸다
$
줄 끝,문자열 끝,위치 표시 2
\b
글자 경계선
\B
비자 분계선
\A
목표 의 시작(다 중 줄 모드 에서 독립)은 위치 0 을 표시 합 니 다.
\Z
대상 의 끝 이나 끝 에 있 는 줄 바 꾸 기 전(여러 줄 모드 에서 독립)위치 표시 2
\z
목표 의 끝(다 중 줄 모드 에서 독립)은 위치 2 를 나타 낸다.
\G
목표 중 첫 번 째 일치 위치
A,Z,z,G 는 거의 사용 하지 않 는 다.
이러한 단언 의 테스트 는 모두 현재 위 치 를 바탕 으로 하 는 테스트 이 고 단언 은 더욱 복잡 한 테스트 조건 을 지원 한다.더 복잡 한 단언 은 하위 모드 로 표 시 됩 니 다.선행(전방 향)단언(Lookahead assertions)과 후 행(후방 향)단언(Lookabehind assertions)을 포함 합 니 다.이러한 단언 판단 은 일치 하 는 판단 조건 만 하고 일치 하 는 결과 에 기록 되 지 않 으 며 문자 와 일치 하지 않 습 니 다.
먼저 단언,정방 향 단언,정방 향 순시(Lookahead assertions)
먼저 단언 하 다pattern),현재 일치 하 는 위치 부터 뒤에 일치 하 는 문자열 이 성립 되 었 는 지 테스트 합 니 다.그리고(?!pattern)이런 두 가지 형식 을 예 로 들 어 봅 시다.원본 문자열:"abc 100",정규 표현 식 은:
/[a-z]+(?=\d+)/,우리 가 분석 한 과정 은 다음 과 같다.

먼저 정규 표현 식 문자[a-z]+에서 제어 권 을 얻 고 일치 하 는 문자:abc",위 치 는"0"부터 일치 하 며 3 으로 변 합 니 다.이 위치 에서/d+가 성립 되 었 는 지 테스트 합 니 다.문자 100 과 일치 하여 성립 되 었 습 니 다.따라서 정규 표현 식 은 단언 에 성공 했다.일치 하 는 문자열 을 되 돌려 줍 니 다."abc"
(?!pattern)단,정방 향 일치 입 니 다.뒤에 일치 하지 않 으 면 진짜 로 돌아 갑 니 다.다음은 시스템 원본 문자열 입 니 다:abc 100,테스트 결 과 는 다음 과 같 습 니 다.

후 행 단언,역방향 단언,역방향 순시(Lookabehind assertions)
후 행 단언,흔 한 표현 식 은:(?<=pattern)혹은(?
우선 정규 표현 식 문자/\w+/에서 제어 권 을 가 져 옵 니 다.일치 하 는 문자:"abc 100",위 치 는"0"부터 일치 합 니 다.6 글자 로 일치 합 니 다.이 위치 0 에서 왼쪽 변 화 를 검사 하 는 데 실 패 했 습 니 다.따라서/\w+/문자 b 부터'bc 100'과 일치 하 며 왼쪽 에 문자'a'가 있 는 지 테스트 합 니 다.따라서 문자열"bc 100"과 일치 합 니 다.(?후기:이 글 에서 우 리 는 검색 특징 이 모두 왼쪽 에서 있 는 것 을 발 견 했 습 니 다.일반적으로 정방 향 단언 은 정규 표현 식 에 놓 고,반대 단언 은 정규 표현 식 에 맞 게 놓 습 니 다.하지만 여기 도 앞 이나 뒤에 놓 을 수 있다.여 기 는 더 이상 예 를 들 지 않 겠 습 니 다.교류 토론 을 환영 합 니 다!

좋은 웹페이지 즐겨찾기