이 글에서는 튜토리얼 전후에 정규식lookaround를 주로 소개하고, 특정 문제에 따른 정방향 조회 및 역방향 조회 기능의 구현 기법과 주의사항을 분석합니다. 둘러보기 전후의 정규식 튜토리얼. 다음과 같이 참조용으로 모든 사람과 공유하세요.
참고: 모든 예제에서 정규식 일치 결과는 소스 텍스트의
[및 ] 사이에 포함됩니다. 일부 예제는 Java를 사용하여 구현됩니다. Java 자체에서 정규식을 사용하는 방법에 대해서는 해당 부분에서 설명하겠습니다. 모든 Java 예제는 JDK1.6.0_13에서 테스트되었습니다. 1. 문제 소개
HTML 페이지에서 페이지의 태그 일치와 같이 태그 쌍 사이의 텍스트, 즉
정규식: <[Tt][Ii][Tt][Ll] [Ee] >.*? [Tt][Ii][Tt][Ll][Ee]>
결과:
【분석: <[Tt][Ii][Tt][Ll][Ee]> 이 패턴은 제목 태그 및 텍스트와 일치하지 않음을 의미합니다. 하지만 완벽하지는 않습니다. 태그 자체가 아닌 제목 태그 사이에만 텍스트가 필요하기 때문입니다. 이 문제를 해결하려면 Lookaround를 사용해야 합니다.
2. 정방향 검색
정방향 검색은 일치해야 하지만 결과에 반환되지 않는 패턴을 지정합니다. 정방향 검색은 실제로 ?=로 시작하는 하위 표현식이며 일치할 텍스트는 = 뒤에 옵니다.
URL 주소의 프로토콜 부분을 일치시키는 예를 살펴보세요: 텍스트:http://blog.csdn.net/mhmyqn
정규 표현식: .+(?=:)
결과 :【http】
://blog.csdn.net/mhmyqn 분석: URL 주소의 프로토콜 부분은 다음 부분입니다. 패턴 .+는 모든 텍스트와 일치하며 하위 표현식(?=: )는 :과 일치하지만 일치하는 :은 결과에 나타나지 않습니다. ?=를 사용하여 정규식 엔진에:이 발견되면 괜찮지만 최종 반환 결과에는 포함되지 않음을 나타냅니다. 여기서 정방향 일치(?=:)를 사용하지 않고 (:)를 직접 사용하면 일치 결과는 http:가 되며 여기에는 다음이 포함됩니다. 이는 우리가 원하는 것이 아닙니다.
참고: 앞 뒤 검색은 패턴의 상대적인 위치를 의미하며 검색할 텍스트는 왼쪽이 앞, 오른쪽이 뒤입니다. 즉, 정방향 검색은 xxx(?=xxx)이고, 역방향 검색은 (?
3. 뒤로 검색
뒤로 보기 연산자
는 ?<=입니다. 그러나 모든 정규식 구현이 역방향 검색을 지원하는 것은 아닙니다.JavaScript는 역방향 검색을 지원하지 않습니다. 예를 들어 텍스트($로 시작하고 뒤에 숫자가 옴)에서 가격을 찾으려는 경우 결과에 통화 기호가 포함되지 않습니다.
텍스트:category1:$136.25,category2:$28,category3: $88.60
정규식: ( ?<=$)d+(.d+)?
결과: category1:$
【136.25】,category2:$【28】,category3:$ 【88.60】분석: ( ?<=$) 패턴은 $와 일치하고, d+(.d+)? 패턴은 정수 또는 소수와 일치합니다. 결과에서 볼 수 있듯이 결과에는 통화 기호가 포함되지 않고 가격만 포함됩니다. 역방향 조회를 사용하지 않으면 어떻게 될까요? 결과에 $를 포함하는 $d+(.d+)? 패턴을 사용합니다. d+(.d+)? 패턴을 사용하면 Category1(23)의 숫자와도 일치하지만 이는 우리가 원하는 것이 아닙니다.
참고: 정방향 검색 패턴의 길이는 가변적이며 ., *, + 등의 메타 문자를 포함할 수 있지만 역방향 검색 패턴은 고정 길이만 가능하며 ., *, + 등을 포함할 수 없습니다. 메타 문자.
4 정방향 검색과 역방향 검색 결합
정방향 검색과 역방향 검색을 결합하여 이전 HTML 태그 사이의 텍스트 문제를 해결합니다
:정규 표현식: (?<=<[Tt][Ii][Tt][Ll][Ee]>).*?(?= [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 중국어 웹사이트의 기타 관련 기사를 참조하세요!