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

如何用Python正则表达式提取字符串中单引号间的内容?

解决单引号内容提取的正则问题

Hey there! Let's break down why your current regex isn't working and fix it quickly.

你的原正则问题出在哪?

你写的 r'\'*\' 其实是在匹配零个或多个单引号,再加上一个单引号——简单说,它找的是单引号本身(或者连续的单引号),完全没涉及到引号中间的内容,所以自然提取不到very well啦。

正确的正则写法

要提取单引号之间的内容,我们需要先匹配开头的单引号,然后捕获中间的所有字符,最后匹配结尾的单引号。这里推荐用非贪婪匹配来避免多引号场景下的错误匹配,具体写法如下:

import re
str1 = "I am doing 'very well' for your info"
# 正则:匹配单引号,捕获中间非贪婪的任意内容,再匹配结束单引号
pt = re.compile(r"'(.*?)'")
m = pt.findall(str1)
print(m)  # 输出结果: ['very well']

详细解释这个正则

  • ':精准匹配开头的单引号
  • (.*?):这是一个捕获组,.*? 是非贪婪模式的任意字符匹配——它会在遇到第一个结束的单引号时停止匹配,完美适配多个单引号的场景(比如"I'm 'good' and 'fine'"会提取出['good', 'fine'])
  • ':精准匹配结尾的单引号

如果你的字符串里绝对只有一对单引号,也可以用贪婪匹配r"'(.*)'",但非贪婪模式更通用、更安全哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:38:17