>백엔드 개발 >PHP 튜토리얼 >PHP에서 정규식의 고급 응용

PHP에서 정규식의 고급 응용

PHPz
PHPz원래의
2023-06-22 18:27:111283검색

PHP 개발에서 정규식은 개발자가 문자열 일치, 대체, 추출 및 기타 작업을 신속하게 수행하는 데 도움이 되는 매우 효율적인 도구입니다. 이 기사에서는 역참조, 탐욕적 일치 및 게으른 일치, 너비가 0인 어설션 등을 포함하여 PHP의 정규식의 고급 응용 프로그램을 소개합니다.

1. 역참조

역참조는 정규식에서 매우 중요한 개념입니다. 이미 일치하는 하위 표현식의 내용을 사용하여 다음 문자열을 일치시킬 수 있습니다. PHP에서는 정규식 역참조를 사용할 때 숫자와 함께 특수 기호 ""를 사용해야 합니다.

예를 들어 다음 정규 표현식은 두 개의 연속된 동일한 단어와 일치할 수 있습니다.

/^(w+)s$/

여기서 " "는 이전 단어와 일치하는 첫 번째 하위 표현식에 대한 역참조를 나타냅니다.

2. 탐욕스러운 일치와 게으른 일치

정규식에서 탐욕스러운 일치는 가능한 한 많은 문자를 일치시키는 것을 의미하고, 게으른 일치는 가능한 한 적은 문자를 일치시키는 것을 의미합니다. PHP에서는 수량자 뒤에 "?"를 추가하여 탐욕적 일치와 게으른 일치를 달성할 수 있습니다. 기본적으로 탐욕적 일치가 사용됩니다.

예를 들어 다음 정규식은 HTML의 a 태그와 일치할 수 있습니다.

/<a.*?href="(.*?)".*?>(.*?)</a>/

그 중 .?는 지연 일치를 나타내고, (.?)는 href의 URL과 a 태그의 텍스트 내용을 추출하는 것을 나타냅니다. .

3. 너비가 0인 어설션

너비가 0인 어설션은 일치하는 문자열의 특정 위치의 앞 또는 뒤가 특정 조건을 충족하지만 일치하는 내용이 결과에 속하지 않는 것을 의미합니다. 너비. 일반적인 제로 너비 어설션에는 긍정적인 예측, 부정적인 예측, 긍정적인 검토 및 부정적인 예측이 포함됩니다.

(1) 긍정적 예측

긍정적 예측 매칭 콘텐츠는 매칭될 콘텐츠 바로 뒤에 있어야 합니다.

예를 들어, 다음 정규 표현식은 단어 뒤에 숫자가 오는 것과 일치할 수 있습니다.

/w+(?=d)/

여기서 "(?=d)"는 전방 예측, 숫자 일치 및 결과로 숫자를 사용하지 않음을 의미합니다.

(2) 부정 예측

부정 예측으로 일치에 성공한 콘텐츠는 일치할 콘텐츠 바로 뒤에 오면 안 됩니다.

예를 들어, 다음 정규 표현식은 뒤에 숫자가 없는 단어와 일치할 수 있습니다.

/w+(?!d)/

여기서 "(?!d)"는 부정적인 예측을 나타내며 숫자가 아닌 콘텐츠와 일치하며 이러한 콘텐츠를 사용하지 않습니다. 결과적으로.

(3) Forward Lookback

Forward Lookback으로 매칭에 성공한 콘텐츠가 매칭될 콘텐츠 앞에 와야 합니다.

예를 들어 다음 정규 표현식은 연도가 월 및 일보다 앞에 오는 날짜와 일치할 수 있습니다.

/(?<=d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[01]))d{4}/

where, "(?<=d{2}(0[1-9]|1[0-2 ] )(0[1-9]|1-2|3[01]))"는 월과 일을 예측하여 일치시켜 연도를 일치시키고 월과 일을 결과로 사용하지 않는 정규식을 의미합니다. .

(4) Negative Lookback

Negative Lookback으로 매칭에 성공한 콘텐츠가 매칭 대상 콘텐츠 앞에 있어서는 안 됩니다.

예를 들어, 다음 정규식은 .로 시작하는 줄을 제외한 모든 줄과 일치할 수 있습니다.

/(?<!^).w+/

where, "(?

4. 결론

정규식은 PHP 개발, 특히 문자열 처리, 데이터 정리 등에 큰 역할을 하며 없어서는 안될 도구입니다. 이 기사에서는 정규 표현식의 고급 응용 프로그램에 대한 기본 내용을 소개합니다. 개발자는 PHP 기술을 더욱 향상시키기 위해 점차적으로 깊이 배울 수 있습니다.

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

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