>  기사  >  웹 프론트엔드  >  여러 줄 모드 및 한 줄 모드 그래픽 분석_정규식

여러 줄 모드 및 한 줄 모드 그래픽 분석_정규식

微波
微波원래의
2017-06-28 13:38:181276검색

이 글에서는 정규식의 다중선 모드와 단일선 모드의 그래픽 및 텍스트 분석을 주로 소개합니다. 필요한 친구들은 참고하면 됩니다

Expresso에서 "다중선 모드"를 테스트해 보세요

테스트 1

참고: 여기 샘플 텍스트에는 3eeeee 뒤에 캐리지 리턴이 없으며 커서는 e 바로 뒤에 있습니다. 위의 검색 결과 영역에 표시된 대로 일치 결과는 3eeeeee입니다.

여기서 1abcde와 2abc가 일치하지 않는 이유는 무엇인가요?

여러 줄 모드 활성화

^ 문자열 의 시작 부분(문자열의 시작 위치)과 일치하거나 줄의 시작 부분(즉, 개행 문자 뒤의 위치)과 일치할 수 있습니다. n)
$ 문자열의 끝(문자 문자열의 끝 위치)과 일치할 수 있으며 줄의 끝(즉, 개행 문자 n 앞의 위치)과 일치할 수도 있습니다.

멀티 끄기 line mode

^ 문자열의 시작 부분만 일치할 수 있습니다
$ 문자열의 끝 부분만 일치할 수 있습니다

지식 포인트: r은 캐리지 리턴 문자, n은 줄 바꿈 문자입니다. Windows에서는 일반적으로 줄 바꿈이라고 부르는 것이 기본적으로 캐리지 리턴이 먼저이고 그 다음 줄 바꿈이 더 자세히 설명되어 있습니다.

위 그림과 같이 r은 [CR]과 일치하고 n은 [LF]와 일치합니다 <—— CR은 캐리지 리턴 LF는 줄 바꿈입니다.
여러 단락의 문자열(예:
ab
cd
e
) Windows에서 작동 시스템에서는 실제로 다음과 같습니다. ab[CR][LF]cd[CR][LF]e

Windows에서 텍스트의 캐리지 리턴 및 줄 바꿈은 0D 0A로 저장됩니다. 즉, 먼저 저장된 것이 "캐리지 리턴 r"이고, 그 다음에는 "라인 피드 n"이 저장되며,
CR은 기호 'r'로 표시되며, ASCII 코드는 13입니다. 16진수 시스템은 0x0D입니다.
LF는 기호 'n'으로 표시되고, ASCII 코드는 10, 16진수는 0x0A입니다.

정규식: (?m)^(dw+)(s*)$

샘플 텍스트

일치 결과

Expresso 및 PHP에서 여러 줄 모드가 활성화되면 "$"는 문자열의 끝이나 "n" 앞의 위치와 일치합니다.

한 줄 모드

한 줄 모드 활성화: . 모든 문자와 일치할 수 있습니다(줄 바꿈 포함).
한 줄 모드 닫기: 줄 바꿈이 아닌 문자만 일치합니다. 기타 모든 문자(.는 r과 일치할 수 있음) 즉, n과 일치하지 않는 경우를 제외하고 모든 문자 )

다중 행 모드는 ^ 및 $의 일치에 영향을 미칩니다.
단일 행 모드의 일치는 ^ 또는 $ 또는 둘 다를 포함해야 합니다. m을 추가해도 의미가 없습니다

단선 모드와 다선 모드는 8극에 패할 수 없는 두 가지 개념입니다. 이 두 MS가 상호 배타적인 것은 정규 개발의 역사적 이유 때문입니다. Single-line 모드는 소수점 ""의 일치 범위에 영향을 줍니다.

Multi-line 패턴은 "^" 및 "$"의 일치 범위에 영향을 미칩니다.


다음 개념은 필연적인 연결이 없습니다. 전역 매칭, 다중 라인 모드 및 그리디 모드 사이

전역 매칭이 꺼지고 첫 번째 성공적인 일치만 일치되고, 전역 매칭이 켜져 있으며, 성공한 모든 일치가 일치됩니다.

글로벌 모드는 일부 스크립트 언어에서만 볼 수 있는 개념입니다. ​​

일치할 때 .NET의 Match 메서드와 유사하게 전역 모드를 끄고 .NET과 유사하게 전역 모드를 켭니다. Matches 메서드

는 Java의 replacementFirst와 유사하게 교체를 수행할 때 전역 모드를 끕니다. , Java의 replacementAll과 유사한 전역 모드를 켭니다

(일치 수행 시 PHP의 preg_ match와 유사하게 전역 모드를 끕니다.
함수

; 전역 모드를 켭니다. 이는 preg_ match_ all 함수와 유사합니다. PHP)

위 내용은 여러 줄 모드 및 한 줄 모드 그래픽 분석_정규식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.