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

正则表达式如何匹配引号内内容并排除首尾引号?

解决引号内内容匹配(排除引号)的正则调整方案

看来你是想从目标字符串里精准提取引号包裹的内容,却不小心把开头的引号也带进来了——这是正则匹配时很常见的小问题,我来帮你调整一下:

核心问题分析

你当前用的正则"([a-zA-Z0-9\s?]+),开头的"会被当作匹配的一部分,所以如果直接取整个匹配结果,自然会带上开头的引号。而且这个正则还有个小缺陷:它只限定了匹配字母、数字、空格和问号,万一引号内有其他字符(比如标点)就会匹配不全,同时也没处理闭合的引号,可能会匹配超出预期的内容。

调整方案

根据你的需求,有两种常用的解决思路:

思路1:使用正向预查(直接匹配不带引号的内容)

如果你希望整个匹配结果就是引号内的内容(不需要额外取捕获组),可以用正向预查来确保前面是引号,但不把引号包含在匹配结果里:

(?<=")[^"]+
  • (?<="):正向预查,检查当前位置前面是一个双引号,但不会把这个引号包含到匹配结果中
  • [^"]+:匹配任意数量(至少1个)的非引号字符,这样会精准停在闭合的引号前,比限定字符集更通用

用这个正则匹配你的字符串,得到的结果就是["Documents", "For boss"],完全不带引号。

思路2:保留捕获组,提取捕获组内容

如果你想继续基于原正则调整,只需要确保你提取的是捕获组1的内容,而不是整个匹配项。调整后的正则可以完善一下闭合引号的处理:

"([^"]+)"
  • 外层的"匹配前后的引号,([^"]+)捕获引号内的所有非引号字符。此时整个匹配结果是带引号的(比如"Documents"),但捕获组1的内容就是Documents,直接取捕获组1即可得到你想要的结果。

验证效果

用调整后的正则匹配SRE("Documents", with: "For boss"),两种方案都能精准得到:

  • Documents
  • For boss

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:55:59