>  기사  >  웹 프론트엔드  >  정규식 전후의 둘러보기에 대한 자세한 설명 tutorial_regularexpression

정규식 전후의 둘러보기에 대한 자세한 설명 tutorial_regularexpression

微波
微波원래의
2017-06-28 13:47:281185검색

이 글에서는 튜토리얼 전후에 정규식lookaround를 주로 소개하고, 특정 문제에 따른 정방향 조회 및 역방향 조회 기능의 구현 기법과 주의사항을 분석합니다. 둘러보기 전후의 정규식 튜토리얼. 다음과 같이 참조용으로 모든 사람과 공유하세요.

참고: 모든 예제에서 정규식 일치 결과는 소스 텍스트의

[

] 사이에 포함됩니다. 일부 예제는 Java를 사용하여 구현됩니다. Java 자체에서 정규식을 사용하는 방법에 대해서는 해당 부분에서 설명하겠습니다. 모든 Java 예제는 JDK1.6.0_13에서 테스트되었습니다. 1. 문제 소개

HTML 페이지에서 페이지의 태그 일치와 같이 태그 쌍 사이의 텍스트, 즉 사이의 텍스트를 일치시킵니다. title>: </strong> </p>텍스트: <p><head><TITLE>welcome to my page

정규식: <[Tt][Ii][Tt][Ll] [Ee] >.*?

결과:

내 페이지에 오신 것을 환영합니다</ title>】 <p></head><span style="color: #3366ff"><span style="color: #ff6600"></span>분석: <[Tt][Ii][Tt][Ll][Ee]> 이 패턴은 제목 태그 및 텍스트와 일치하지 않음을 의미합니다. 하지만 완벽하지는 않습니다. 태그 자체가 아닌 제목 태그 사이에만 텍스트가 필요하기 때문입니다. 이 문제를 해결하려면 Lookaround를 사용해야 합니다. </span></p> <p>2. 정방향 검색 </p> <p><strong>정방향 검색은 일치해야 하지만 결과에 반환되지 않는 패턴을 지정합니다. 정방향 검색은 실제로 ?=로 시작하는 하위 표현식이며 일치할 텍스트는 = 뒤에 옵니다. </strong></p>URL 주소의 프로토콜 부분을 일치시키는 예를 살펴보세요: <p></p>텍스트: <p>http://blog.csdn.net/mhmyqn</p> <p><span style="color: #3366ff">정규 표현식: .</span>+(?=:)</p> <p><span style="color: #3366ff">결과 :</span>【http】</p> <p>://blog.csdn.net/mhmyqn<span style="color: #ff6600"></span><span style="color: #3366ff"> 분석: URL 주소의 프로토콜 부분은 다음 부분입니다. 패턴 .+는 모든 텍스트와 일치하며 하위 표현식(?=: )는 :과 일치하지만 일치하는 :은 결과에 나타나지 않습니다. ?=를 사용하여 정규식 엔진에:이 발견되면 괜찮지만 최종 반환 결과에는 포함되지 않음을 나타냅니다. 여기서 정방향 일치(?=:)를 사용하지 않고 (:)를 직접 사용하면 일치 결과는 http:가 되며 여기에는 다음이 포함됩니다. 이는 우리가 원하는 것이 아닙니다. </span></p> <p>참고: 앞 뒤 검색은 패턴의 상대적인 위치를 의미하며 검색할 텍스트는 왼쪽이 앞, 오른쪽이 뒤입니다. 즉, 정방향 검색은 xxx(?=xxx)이고, 역방향 검색은 (?</p> <p><span style="color: #ff0000"></span> 3. 뒤로 검색 </p> <p><strong>뒤로 보기 </strong> 연산자 </p>는 ?<=입니다. 그러나 모든 정규식 구현이 역방향 검색을 지원하는 것은 아닙니다. <p>JavaScript<a href="http://www.php.cn/wiki/996.html" target="_blank">는 역방향 검색을 지원하지 않습니다. </a><a href="http://www.php.cn/wiki/48.html" target="_blank">예를 들어 텍스트($로 시작하고 뒤에 숫자가 옴)에서 가격을 찾으려는 경우 결과에 통화 기호가 포함되지 않습니다. </a></p>텍스트: <p>category1:$136.25,category2:$28,category3: $88.60</p> <p><span style="color: #3366ff">정규식: </span>( ?<=$)d+(.d+)?</p> <p><span style="color: #3366ff">결과: </span>category1:$</p>【136.25】<p>,category2:$<span style="color: #3366ff">【28】<span style="color: #ff6600">,category3:$</span><span style="color: #ff6600"> 【88.60】</span></span><span style="color: #ff6600">분석: ( ?<=$) 패턴은 $와 일치하고, d+(.d+)? 패턴은 정수 또는 소수와 일치합니다. 결과에서 볼 수 있듯이 결과에는 통화 기호가 포함되지 않고 가격만 포함됩니다. 역방향 조회를 사용하지 않으면 어떻게 될까요? 결과에 $를 포함하는 $d+(.d+)? 패턴을 사용합니다. d+(.d+)? 패턴을 사용하면 Category1(23)의 숫자와도 일치하지만 이는 우리가 원하는 것이 아닙니다. </span></p> <p>참고: 정방향 검색 패턴의 길이는 가변적이며 ., *, + 등의 메타 문자를 포함할 수 있지만 역방향 검색 패턴은 고정 길이만 가능하며 ., *, + 등을 포함할 수 없습니다. 메타 문자. </p> <p><span style="color: #ff0000"></span>4 정방향 검색과 역방향 검색 결합 </p> <p><strong> 정방향 검색과 역방향 검색을 결합하여 이전 </strong>HTML 태그 사이의 텍스트 문제를 해결합니다</p>: <p><a href="http://www.php.cn/code/5011.html" target="_blank">텍스트: </a><head><TITLE>welcome 내 페이지

정규 표현식: (?<=<[Tt][Ii][Tt][Ll][Ee]>).*?(?=)

결과:<span style="color: #ff6600">【welcome to my page】</span>

분석: 에서 볼 수 있습니다. 결과적으로 문제는 완벽하게 해결되었습니다. (?)는 과 일치하지만 이를 사용하지 않는 역방향 연산입니다. (?=</[Tt ][Ii][Tt][Ll][Ee]>)는 과 일치하지만 이를 사용하지 않는 전달 작업입니다. 최종 반환된 일치 결과에는 태그 사이의 텍스트만 포함됩니다.

5. 정방향 및 역방향 검색을 무효화합니다

앞서 언급한 정방향 검색과 역방향 검색은 일반적으로 텍스트를 일치시키는 데 사용됩니다. 목적은 반환될 일치 결과의 텍스트 위치를 지정하는 것입니다. 일치하는 결과 앞뒤에 어떤 텍스트가 있어야 하는지). 이러한 사용법을 정방향 검색 및 정방향 검색이라고 합니다. 또한 주어진 패턴과 일치하지 않는 텍스트를 찾는 부정적인 정방향 검색과 부정적인 역방향 검색이 있습니다.

정방향 및 역방향 검색 연산자:

(?=) 긍정적 정방향 검색
(?!) 부정 정방향 검색
(?< = ) 긍정적 역방향 검색
(? 부정적 역방향 검색

예를 들어 텍스트에 가격($로 시작하고 뒤에 숫자가 옴)과 수량, 가격과 수량을 알아보려면 먼저 가격을 살펴보겠습니다.

텍스트: 이 주문으로 사과 10개, 오렌지 15개, 배 10개에 $30를 지불했습니다.

정규식 : (?<=$ )d+

결과: 이 주문으로 사과 10개, 오렌지 15개, 배 10개에 【$30】를 지불했습니다. 【$5】를 절약했습니다.

수량 찾기:

텍스트: 사과 10개, 오렌지 15개, 배 10개에 30달러를 지불했습니다. 【10】

사과,

【15】 오렌지, 그리고 【10】

배. 이 순서입니다.

분석: (? 6. 요약

정방향 및 역방향 검색을 사용하면 최종 일치 결과에 어떤 콘텐츠가 포함될지 정밀하게 제어할 수 있습니다. 이전 및 이후 검색 작업을 통해 하위 표현식을 사용하여 텍스트 일치 작업이 발생하는 위치를 지정하고 일치만 하고 소비하지 않는 효과를 얻을 수 있습니다.

PS: 다음은 참고할 수 있는 더욱 편리한 정규식 도구 2개입니다.

JavaScript 정규식 온라인 테스트 도구: http://tools.jb51

정규 표현식 온라인 생성 도구:
http://tools.jb51.net/regex/create_reg

위 내용은 정규식 전후의 둘러보기에 대한 자세한 설명 tutorial_regularexpression의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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