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

正则表达式如何提取最外层双引号内带嵌套引号的文本

截取最外层双引号内容的正则方案

问题说明

需要从带固定前缀的文本中,截取最外层一对双引号内部的全部内容,允许内容本身包含双引号字符。
测试用待处理文本:

some text "have "some text" here "that should" be cut"

之前使用的正则:

some text "(?<name>[^"]*)"

实际运行仅返回have,预期需要提取的结果为:

have "some text" here "that should" be cut

问题原因

原正则的捕获组规则[^"]*只会匹配连续的非双引号字符,遇到内容里第一个内嵌的双引号就会终止匹配,根本覆盖不到后面带双引号的内容。

可用正则

直接利用正则默认的贪婪匹配特性即可,写法如下:

some text "(?<name>.*)"

如果待匹配的双引号内容包含换行,开启单行模式(让.支持匹配换行符)即可,对应写法:

some text "(?<name>.*)"s

逻辑说明

正则默认是贪婪匹配模式,.*会尽可能匹配最长的符合规则的内容:匹配时先找到some text 后面的第一个双引号作为起点,之后一直向后匹配到文本末尾,再向前回溯找到整段内容里最后一个双引号作为终点,刚好把首尾两个最外层双引号中间的所有内容(包括内部嵌的所有双引号)都捕获到name组里,跑测试用例就能拿到预期的完整结果。

注意:该方案适配你给出的样例场景,即最外层双引号为前缀后第一个双引号、以及文本末尾最后一个双引号的结构。如果你的文本在最后一个双引号之后还有其他双引号内容,需要根据实际的边界规则调整匹配逻辑。


内容的提问来源于stack exchange,提问作者Idur Jul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:06:24