>

이 텍스트가 있다고 상상해보십시오 (정규 표현식을 사용하여 HTML을 구문 분석하는 것이 올바른 해결책이 아니라는 것을 알고 있습니다 ...)

<div><p>HELLO1</p>
 <span>SPIDER</span></div>
 <div><p>HELLO2</p>
 <span>CHEESE</span></div>
 <div><p>HELLO3</p>
 <span>BANANA</span></div>

<p> 내부의 텍스트와 일치 시키려고합니다  그리고 <span>  각각 (생각 된 예입니다)

다음을 사용하여 달성 할 수 있습니다 :

/<p>(.*?)<\/p>.*?<span>(.*?)<\/span>.*?<\/div>/gsmi

그러나 ppan 안의 텍스트가 CHEESE 이면 일치하고 싶지 않습니다. . 필자는 부정적인 예측을 사용하려고 시도했습니다.

/<p>(.*?)<\/p>.*?<span>((?!CHEESE).*?)<\/span>.*?<\/div>/gsmi

그러나 패턴이 HELLO2 와 일치 할 때 잘못된 것과 일치합니다.  그리고 BANANA  어디 HELLO3 을 원하는  그리고 BANANA

나는 이것이 .*? 를 사용하기 때문에 이것이 깨달았다  그러나 이것은 실제 솔루션에 필요합니다.

예 : https://regex101.com/r/h4YgDm/3

전체 패턴 만 일치하지만 여러 줄에 걸쳐있는 방법은 무엇입니까?


  • 답변 # 1

    두 단계로 원하는 것을 달성 할 수 있습니다. 첫째, div 를 추출  다음과 같은 기준을 충족하는 요소 (예 : 치즈 없음) (demo) :

    <div>(?:(?!CHEESE).)*?<\/div>
    
    

    둘째, p 사이의 내용을 선택하십시오  그리고 span  태그를 두 그룹으로 표시 (데모) :

    (?<=<p>)(.*?)(?=<\/p>)(?:.*?)(?<=<span>)(.*?)(?=<\/span>)
    
    

  • 답변 # 2

    내 동료가 나에게이 답변을 보냈습니다.

    https://regex101.com/r/h4YgDm/8

    정규식 : (?:(?:<div><p>(\w*)<\/p>\s)(?!<span>CHEESE<\/span>)(?:<span>(\w*)<\/span>)<\/div>)

  • 이전 Netlogo, 목록 1에서 거북을 만든 다음 목록 2의 좌표로 이동
  • 다음 Python Random Forest Regressor 제거에도 불구하고 Nan 값에서 오류 발생