gpt4 book ai didi

javascript - 提取两个单词之间的单词javascript

转载 作者:行者123 更新时间:2023-12-01 02:34:35 25 4
gpt4 key购买 nike

这里我有这样的文字

<div class="listing-details" style="outline: 1px solid blue;">
<meta itemprop="startDate" content="2016-04-11T18:30:00.000Z">
<span class="keypoint" title="old" style="outline: 1px solid blue;">
<span>2 - 3 years old</span></span>
<span class="keypoint" title="Bathrooms" style="outline: 1px solid blue;">
<span>1 Bathrooms</span></span>
<span class="keypoint" title="floor" style="outline: 1px solid blue;">
<span>1<sup>st</sup>floor</span></span>
</div>

我想提取<span>之间的一个单词和</span>来自线<span>2 - 3 years old</span>为此我尝试了

TAG POS=1 TYPE=div ATTR=class:listing-details EXTRACT=HTM
SET txt1 {{!EXTRACT}}
SET a EVAL("var b='{{txt1}}';var c=b.split('<span>').pop().split('</span>').shift();c;")
PROMPT {{a}}

但这给了我这个输出 1<sup>st</sup>floor这是来自这篇文章 <span>1<sup>st</sup>floor</span>知道我哪里出错了吗?

谢谢

多姆尼克。

最佳答案

我不熟悉 iMacros,但我假设当您点击 EVAL 时你要做的第一件事就是分配

'<meta ...><span class="keypoint" ...><span>2 - 3 years old</span></span><span class="keypoint" ...><span>1 Bathrooms</span></span><span class="keypoint" ...><span>1<sup>st</sup>floor</span></span>'

b 。在这种情况下,让我们来看看

b.split('<span>').pop().split('</span>').shift();

正在做。

<强> split('<span>')

'<span>' 的每个实例处将字符串拆分为数组。现在您正在运行

[
'<meta ...><span class="keypoint" ...>',
'2 - 3 years old</span></span><span class="keypoint" ...>',
'1 Bathrooms</span></span><span class="keypoint" ...>',
'1<sup>st</sup>floor</span></span>'
]

<强> pop()

删除数组的最后一个元素并返回它。现在您正在运行

'1<sup>st</sup>floor</span></span>'

并且您丢失了您关心的文本。

如何修复

既然您已经表现出了在 HTML 上执行字符串操作的意愿,您不妨使用正则表达式。您可以仅抓取第一个 '<span>' 之间的文本。和第一个</span>

var c = b.match(/<span>(.*?)<\/span>/)[1];

b.match 搜索 b对于字面量 <span> ,然后在查找 </span> 之前仅匹配所需数量的字符。它返回一个包含两个元素的数组:正则表达式匹配的完整字符串和括号中的部分。您只关心括号中的部分,因此我们仅使用数组的该元素。

有关 HTML 和正则表达式的强制性警告:

THIS WILL NOT WORK IN THE GENERAL CASE AND MAY SUMMON ZALGO

HTML 太复杂,正则表达式无法在每种情况下可靠地处理。但是,如果您的 HTML 受到足够的限制,以至于您知道通过正则表达式发送的每个字符串将如何构造,那么您应该没问题。

关于javascript - 提取两个单词之间的单词javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48031583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com