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

Python正则表达式提取单引号内内容的优化方案咨询

提取短信中所有单引号包裹内容的最优正则方案

你之前尝试的正则过于依赖文本的上下文结构,很容易因为短信格式的细微变化失效。其实要提取所有单引号'内的内容,我们可以用更通用、鲁棒性更强的正则表达式,完全不需要绑定具体的句子结构。

最优正则表达式

直接用这个正则就能捕获所有单引号包裹的内容:

'([^']+)'

正则解释

  • ':匹配开头的单引号
  • ([^']+):捕获组,匹配任意非单引号的字符(包括字母、数字、斜杠、点号等),+表示匹配1次或多次,确保捕获完整的内容
  • ':匹配结尾的单引号

这个正则的核心优势是不依赖文本的具体语序或结构,不管单引号出现在短信的哪个位置,里面的内容是什么格式(带斜杠、点号都没问题),都能准确提取。

示例验证

用你提供的短信文本测试:

one time password for your transaction at, 'xxxx' of inr '1897.00' on your xxxx bank 'debit/credit/deposit/....' card ending '0000' is 0000

使用正则'([^']+)'会捕获到以下结果:

  • xxxx
  • 1897.00
  • debit/credit/deposit/....
  • 0000

代码示例(Python)

如果要在代码中实现提取,可以这样做:

import re

sms_content = "one time password for your transaction at, 'xxxx' of inr '1897.00' on your xxxx bank 'debit/credit/deposit/....' card ending '0000' is 0000"
captured_values = re.findall(r"'([^']+)'", sms_content)

print("提取到的单引号内容:")
for idx, val in enumerate(captured_values, 1):
    print(f"{idx}. {val}")

运行后输出:

提取到的单引号内容:
1. xxxx
2. 1897.00
3. debit/credit/deposit/....
4. 0000

额外说明

如果后续需要区分不同类型的内容(比如商户名、交易金额、卡类型),可以基于上下文写更针对性的分组正则,但如果只是单纯提取所有单引号包裹的内容,上面的方案是最简洁、最不易出错的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:28:54