카테고리 없음
[자바 스크립트] 정규식을 사용하여 글꼴 태그 내의 텍스트 캡처
행복을전해요
2021. 2. 1. 12:07
<font>(.*?)</font>
점이 줄 바꿈과 일치하지 않기 때문에 작동하지 않습니다. [\s\S]
<font>([\s\S]*?)</font>
참고 : 코드에서 슬래시를 이스케이프하는 것을 잊지 마십시오.
<font>
의 후손 인 태그 를 찾으 <td class="example">
려면 항상 다음 위치에 있는지 확인해야하므로보다 복잡한 패턴을 얻을 수 있습니다 <td>
.
<td class="example">(?:(?=([^<]+|<(?!\/td>|font)))\1)*<font>([\s\S]*?)<\/font>
이 패턴은 태그 앞에 <td>
다른 태그가없는 경우에만 작동합니다 .<td>
<font>
패턴 세부 사항 :
이 부분은 <font>
태그 앞에 허용되는 콘텐츠를 설명합니다 .
(?: # open a non capturing group
(?= # open a lookahead
( # open the capture group 1
[^<]+ # all that is not a <
| # OR
<(?!\/td>|font) # a < not followed by /td> or font
) # close capture group 1
) # close the lookahead
\1 # backreference to capture group 1
)* # close the non capturing group
이것은 원자 그룹 (?>...)
(자바 스크립트에서 사용할 수없는 기능) 을 에뮬레이트하는 트릭 입니다. 정규식 엔진이 역 추적 할 수없는 내부 그룹입니다. 이 기능은 여기에 필요한 단순한 하위 패턴 (?:[^<]+|<(?!\/td>|font))*
이 치명적인 역 추적을 유발할 수 있기 때문 입니다.
트릭 은 예견 단언 의 내용 이 자연 스럽다는 사실을 사용합니다 . 내용은 예견 내의 캡처 링 그룹 내부에 설명되며, 예견의 닫는 괄호 뒤에 캡처 링 그룹에 대한 역 참조를 넣습니다. \1
한 번만 수정 된 캡처를 말하며 문제없이 반복 할 수 있습니다.
정규식을 요청한 것을 알고 있지만 정규식은 HTML 구문 분석에 적합한 도구가 아닙니다. jQuery는 쿼리를 매우 간단하게 만듭니다.
$("TD.example > font").text()
출처
https://stackoverflow.com/questions/22049833