JavaScript 함수에서 문자열 추출

JavaScript 함수에서 문자열 추출

다음과 같은 자바스크립트 함수가 포함된 여러 HTML 파일이 있습니다.

<script type='text/javascript'>eval(function(...............
..............................
781a802d711afb9fe305d5b2e6|nlgphp5ee35huxvkc5xui4xl|gr6weglhvfovda4zodalt7j7glkt5ua|hojehp5ee35huxvkc5xui4xlugr6weglh|vfovl443odalt7klrfbtu4q|mystring123|data|new'.split('|')))
</script>
.......................
<div class="description">mytitle123</div>

|와 |data|new 사이의 부분(이 경우 "mystring123")과 제목 "mytitle123"을 추출하고 싶습니다. 첫 번째 문자열은 항상 eval에 있으며 |data|로 끝납니다. 구분 기호 앞의 영숫자 문자열이 변경됩니다.

답변1

XML/HTML 문서는 적절한 파서 도구를 사용하여 처리되어야 합니다.

xmllint방법( sed모든 라벨 본문 텍스트에서 검색/바꾸기 지원 <script>):

$ xmllint --html --xpath '//script/text()' input.html | sed -En 's/.*\|([^|]+)\|data\|new.*/\1/p'
mystring123

$ xmllint --html --xpath '//div[@class="description"]/text()' input.html
mytitle123

관련 정보