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

如何编写可匹配内容含单引号的单引号包裹字符串正则

单引号嵌套内容的正则匹配方案

原正则的问题

你最初使用的'[^']*'逻辑是匹配单引号后,遇到任意非单引号字符直到下一个单引号停止,所以只要内容里出现单引号就会提前终止匹配,无法处理嵌套场景。

场景1:单字符串仅包含一对外层单引号

直接用贪婪匹配捕获最外层两个单引号之间的所有内容即可,正则写法:

'([\s\S]*)'

匹配效果验证

  • 输入'burger king's',捕获组1返回burger king's,符合预期
  • 输入'pulkit'sharma',捕获组1返回pulkit'sharma,符合预期
  • 输入'989'等普通无嵌套单引号内容,捕获组返回对应正常内容,兼容原有场景

场景2:单字符串包含多对独立单引号

如果需要同时匹配多个独立的单引号对(例如'first'content' 'second'content'要分别提取两组内容),可以用断言判断单引号是否为闭合边界,正则写法:

'((?:[^']|'(?!\s|$))*)'

该正则逻辑为:只有当单引号后紧跟空格或字符串结尾时,才判定为闭合边界,其余位置的单引号都会被算作内容的一部分正常匹配。

标准转义单引号场景通用方案

如果你的业务中会用反斜杠转义内容中的单引号(例如'it\'s a test'),可以使用通用的转义字符处理正则范式:

'([^'\\]*(?:\\.[^'\\]*)*)'

该正则会自动跳过被反斜杠转义的单引号,直到遇到未被转义的闭合单引号停止,同时兼容无转义的普通场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:54:06