perl 정규 표현식 예제

perl 정규 표현식 예제

예를 들어 빈 주석이 아닌 주석을 $1로 잡으려면 다음 중 하나를 사용해야 합니다. , 매칭 또는 대체 (m / 또는 s / / 각각)와 같습니다. 이러한 조합에는 대안이 포함될 수 있으며, 선택 의 문제로 이어질 수 있습니다: 정규식 a |ab를 “abc”에 대해 일치하면 하위 문자열 “a” 또는 “ab”와 일치합니까? 실제로 일치하는 하위 문자열을 설명하는 한 가지 방법은 역추적의 개념입니다(역추적 참조). 그러나 이 설명은 너무 낮은 수준이며 특정 구현 측면에서 생각하게 만듭니다. 5.6.0이 등장하면 펄 정규식은 표준 ASCII 문자 집합 이상을 처리할 수 있습니다. Perl은 이제 전 세계의 많은 언어에서 문자 집합을 인코딩하는 표준인 유니코드를 지원합니다. 유니코드는 문자가 두 배 이상의 너비를 허용하도록 하여 이 작업을 수행합니다. Perl은 ASCII 문자가 여전히 1바이트로 인코딩되지만 chr(127)보다 큰 문자가 두 개 이상의 바이트로 저장될 수 있는 UTF-8 인코딩을 사용합니다. G 어설션은 perlop의 Regexp 견적 유사 연산자에서 설명한 대로 전역 일치(m/g 사용)를 체인하는 데 사용할 수 있습니다. 또한 문자열의 결과하위 문자열과 일치하려는 여러 패턴이 있는 경우 lex와 같은 스캐너를 작성할 때도 유용합니다.

이전 참조를 참조하십시오. G가 일치하는 실제 위치는 svalue()를 사용하여 영향을 받을 수도 있습니다. 경기의 길이를 결정할 때 계산됩니다. 따라서 다음은 영원히 일치하지 않습니다 : 여기 //g 및 G는 한 정규식에서 다른 정규식으로 문자열의 `태그 팀`핸드오프를 만듭니다. 독립적인 하위 식이 있는 Regexps는 문자열을 독립 하위 식에 전달하고 문자열을 둘러싸는 regexp로 다시 전달합니다. “””는 메타문자일 뿐만 이외에도 주어진 집합의 단일 문자와 일치할 수 있는 “문자 클래스”의 예입니다. 이 경우 집합은 가능한 모든 문자에 관한 것입니다. 펄은 “” 외에 여러 문자 클래스를 미리 정의합니다. 이에 대한 별도의 참조 페이지가 있습니다.

^ 메타 문자는 문자열의 시작 부분과 일치하며 $ 메타 기호는 문자열의 끝과 일치합니다. 다음은 몇 가지 간단한 예입니다. 100회 이상은 어떻습니까? 다행히 정규식 엔진은 이러한 종류의 패턴을 빌드하는 수량자를 제공합니다. 예를 들어 텍스트에서 100번 일치하는 것을 찾으려면 다음과 같이 할 수 있습니다: G 어설션은 실제로 pos 함수와 동등한 메타기호일 뿐이므로 정규식 호출 사이에 pos를 계속 사용하고 pos(따라서 G) b의 값을 수정할 수도 있습니다. y 는 pos를 lvalue 서브 루틴으로 사용합니다. 기본 섹션을 제외하고 이 페이지는 “패턴”, 모양 및 기본적으로 사용되는 방법과 같은 정규식 기본 사항에 익숙하다고 가정합니다. 사용 방법에 대한 참조와 동일한 다양한 예는 perlop의 Regexp 견적 유사 연산자에서 m/// / / / / qr/ 및 “??” 토론을 참조하십시오. 또한 s///는 이미 대체된 대체 물의 일부를 덮어쓰는 것을 거부합니다. 예를 들어 문자열을 통해 뒤로 이동하는 대신 첫 번째 반복 후에 중지됩니다. 예를 들어 w는 해당 로캘의 “단어” 문자와 일치하며 대/i” 대/소문자 구분되지 않는 일치는 로캘의 대/소문자 접기 규칙에 따라 일치합니다.

사용된 로캘은 패턴 일치를 실행할 때 적용되는 로캘입니다. 이는 컴파일 시간 로캘과 같지 않을 수 있으며 setlocale() 함수의 중간 호출이 있는 경우 한 일치와 다른 일치와 다를 수 있습니다.