You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP VerbalExpressions中使用stopAtFirst匹配首个目标的方法问询

使用VerbalExpressions提取HTML数据时匹配首个目标内容的问题

问题场景

我需要从以下HTML文本中提取数据:

<p>🥇 | A<a href="https://t.me/ATHcoinEth">ll Time High Community Chat $ATH<br>

</a><br>

A<a href="https://t.me/ATHcoinEth">ll Time High </a>Buy!<br>

💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹💹</p>

<p>💵 0.07 ETH ($127.61)<br>

</a><br>

🔹 0x96f7…89a6 | Txn<br>

✅ New Holder<br>

🔼 Market Cap $52,537</p>

<p>🥇 Chart   ✨ Trade<br>

🟢 Event<a href="https://etherscan.io/address/0x96f7bb6b05c65bfc894acfd73a75254dbdc189a6">s 🔹 Trendin</a>g<a href="https://etherscan.io/tx/0xfc8c35dab30caf5c6d5d422e51bf5c88646eefe5b64f8e09e400a93af523345b"> hr</a>ef=<b>"https://t</b>.me/ETHTRENDING/<b>106566</b>1"&gt;<a href="https://dexscreener.com/ethereum/0xc300545b59cce388c29227c0c9269139024df039">a&gt;</a><a>href=</a><a href="https://flooz.xyz/trade/0x70c85f3f74110f26478baf8bbd0ac377ca4288f7?network=eth&amp;refId=HtwiZx">"http</a>s://t.me/BuyBotTracker"&gt;</a><br></p>

当前使用的Verbal表达式为:

start, then "🥇 |", something, then "<br> </a><br>", end

但由于<br> </a><br>在文本中多次出现,希望匹配到第一个出现的该内容时停止匹配,尝试多种方法均无效,寻求解决方案。

解决方案

VerbalExpressions中的something默认是贪婪匹配,会匹配到最后一个目标字符串。要实现匹配首个目标的需求,可通过以下两种方法调整:

方法1:使用anythingBut限定匹配范围

将原表达式中的something替换为anythingBut("<br> </a><br>"),该方法会匹配所有不包含目标结束字符串的内容,遇到第一个<br> </a><br>时立即停止。对应的Verbal表达式:

start, then("🥇 |"), anythingBut("<br> </a><br>"), then("<br> </a><br>"), end

方法2:开启非贪婪匹配(版本支持时)

若你的VerbalExpressions版本支持lazy()方法,可通过该方法开启非贪婪模式,让匹配尽可能早地结束。调整后的表达式:

start, then("🥇 |"), something().lazy(), then("<br> </a><br>"), end

补充说明

如果使用的VerbalExpressions版本不支持lazy(),优先采用anythingBut方案,它能精准限定匹配内容不包含结束标记,确保只捕获到第一个目标结束符前的内容。

内容的提问来源于stack exchange,提问作者Stephen Senkomago Musoke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 16:15:00