从 JavaScript 函数中提取字符串

从 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

相关内容