>일반적인 문제 >펄 정규식

펄 정규식

DDD
DDD원래의
2023-06-30 15:48:473290검색

펄 정규식

정규식은 텍스트를 일치시키고 처리하는 강력한 도구입니다. Perl 언어의 정규식은 높은 유연성과 기능성을 가지고 있습니다. Perl은 표준 정규식 구문을 사용하고 확장하여 Perl 정규식을 많은 프로그래밍 작업에 적합한 도구로 만듭니다.

Perl 정규식 구문은 기본 일치, 대체 및 기타 기능을 지원할 뿐만 아니라 더 복잡한 텍스트 패턴을 처리하기 위한 일련의 기능과 수정자를 제공하는 PCRE(Perl Compatible Regular Expressions)를 기반으로 합니다.

1. 기본 구문

Perl에서는 정규식을 슬래시 문자(/)로 묶습니다. 예: /pattern/. 슬래시 사이의 부분이 우리가 일치시키려는 패턴입니다.

직접 일치:

가장 간단한 정규식은 직접 일치입니다. 예를 들어 /hello/는 문자열의 "hello"와 일치하는 데 사용될 수 있습니다.

Perl에서는 문자열에 패턴과 정확히 일치하는 내용이 있으면 일치하는 위치(인덱스)가 반환됩니다. 일치하는 항목이 없으면 정의되지 않은 값이 반환됩니다.

메타문자:

Perl 정규식에는 특별한 의미를 갖는 메타문자라고 불리는 일부 특수 문자가 있습니다. 예:

(마침표): 개행 문자를 제외한 모든 문자와 일치합니다.

(별표): 이전 요소를 여러 번 일치시킵니다.

(더하기 기호): 이전 요소를 한 번 이상 일치시킵니다.

(물음표): 이전 요소를 0번 또는 1번 일치시킵니다.

(캐럿): 문자열의 시작 부분과 일치합니다.

(달러 기호): 문자열의 끝과 일치합니다.

문자 클래스:

문자 클래스는 문자 집합 중 하나를 일치시키는 데 사용됩니다. Perl에서 문자 클래스는 대괄호([])로 묶이고 일치하는 문자를 나열합니다. 예:

[abc]: "a", "b" 또는 "c" 중 모든 문자와 일치합니다.

[a-z]: 소문자와 일치합니다.

[^a-z]: 소문자가 아닌 모든 문자와 일치합니다.

정량자:

정량자는 일치하는 문자의 발생 횟수를 지정하는 데 사용됩니다. Perl에서 수량자는 중괄호({})를 사용하여 표현됩니다.

예:

{n}: n번 나타나는 이전 요소와 일치합니다.

{n,}: 최소 n번 나타나는 이전 요소와 일치합니다.

{n,m}: 최소 n회, 최대 m회 나타나는 이전 요소와 일치합니다.

이스케이프 문자:

일부 문자는 정규식에서 특별한 의미를 갖습니다. 이러한 특수 문자 자체를 일치시키려면 이스케이프 문자를 사용해야 합니다. Perl에서는 이스케이프 문자는 백슬래시()를 사용하여 표시됩니다.

예:

.: 마침표(.) 자체와 일치합니다.

: 백슬래시 문자() 자체와 일치합니다.

2. 고급 기능

Perl 정규식은 기본 구문 외에도 더 복잡한 텍스트 패턴을 처리할 수 있는 몇 가지 고급 기능을 제공합니다.

그룹 및 참조:

정규식에서는 괄호(())를 사용하여 요소 집합을 그룹화할 수 있습니다. 이러한 방식으로 이러한 요소를 전체적으로 일치시키거나 처리할 수 있습니다.

예를 들어 /(ab)+/는 "ab"가 여러 번 연속해서 나타나는 것과 일치할 수 있습니다.

또한 텍스트의 추가 처리를 위해 이전 그룹 내용을 참조하기 위해 백슬래시 뒤에 그룹 번호 문자(1, 2 등)를 사용할 수도 있습니다.

예를 들어 /(ab)1/은 동일한 "ab"가 연속적으로 나타나는 것과 일치할 수 있습니다.

폭이 0인 어설션:

너비가 0인 어설션은 문자 자체가 아닌 추상적인 위치를 일치시키는 기능입니다. Perl 정규식은 일반적으로 사용되는 너비가 0인 여러 어설션을 제공합니다.

(?=pattern): 긍정적인 사전 검사, 패턴 앞의 위치 일치.

예를 들어 /hello(?=world)/는 "hello" 다음에 "world"가 오는 것을 일치시킬 수 있습니다.

(?!pattern): 긍정 부정 사전 검사, 일치가 패턴 앞의 위치와 일치하지 않습니다.

예를 들어 /hello(?!world)/는 "world"가 뒤에 오지 않는 "hello"와 일치할 수 있습니다.

(?<=pattern): 역양성 사전 검사를 수행하여 패턴 이후의 위치를 ​​일치시킵니다.

예를 들어 /(?<=hello)world/는 "world" 다음에 "hello"가 오는 것을 일치시킬 수 있습니다.

(?

예를 들어 /(?

교체 및 추출:

텍스트 일치 외에도 정규식을 사용하여 대체 및 추출 작업을 수행할 수 있습니다.

교체: 대체 연산자(s///)를 사용하여 일치하는 내용을 지정된 문자열로 바꿉니다.

예를 들어 $str =~ s/pattern/replace/는 $str에서 일치하는 패턴을 교체로 바꿀 수 있습니다.

추출: 캡처 그룹화를 사용하여 일치하는 하위 문자열을 추출합니다.

예를 들어 문자열 $str이 있는 경우 $str =~ /(pattern)/을 사용하여 패턴이 있는 하위 문자열을 일치시키고 추출할 수 있습니다.

요약:

Perl 정규 표현식은 유연한 구문과 풍부한 기능을 갖춘 강력한 도구이며 텍스트 처리에 폭넓게 적용됩니다. 정규식을 통해 텍스트 일치, 교체, 추출 및 기타 작업을 쉽게 수행할 수 있어 프로그래밍의 효율성과 유연성이 향상됩니다. Perl 정규식을 사용하려면 다양한 기본 구문과 고급 기능을 숙지하고 이를 잘 활용하여 실제 문제를 해결해야 합니다.

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

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