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

如何用Python正则表达式按不同规则提取指定字符串内容?

正则表达式实现指定字符串提取需求

针对你给出的字符串格式,这里提供两种正则方案,直接得到你想要的结果列表:

方案一:单次匹配捕获所有目标内容

使用一个正则表达式同时捕获三个目标部分,代码示例(Python):

import re

tstring = "12A/Ma1 $GJG (#G25)"
# 构建正则模式
pattern = r'.*/(..).*\$(\S+).*\(#(.*)\)'
match_result = re.match(pattern, tstring)

if match_result:
    extracted_list = [match_result.group(1), match_result.group(2), match_result.group(3)]
    print(extracted_list)  # 输出: ['Ma', 'GJG', 'G25']

正则模式解释

  • .*\/(..):匹配到最后一个/,然后捕获紧跟其后的2个字符(对应第一个目标"Ma")
  • .*\$(\S+):匹配到最后一个$,然后捕获其后所有非空白字符(直到空格,对应第二个目标"GJG")
  • .*\(#(.*)\):匹配到(和#,然后捕获#之后到)前的所有内容(对应第三个目标"G25")

方案二:分三次单独匹配(更直观)

如果觉得单次匹配的正则太复杂,可以分三次分别提取每个目标:

import re

tstring = "12A/Ma1 $GJG (#G25)"

# 提取/后的前两个字符
part1 = re.search(r'/(..)', tstring).group(1)
# 提取$后到空格前的字符
part2 = re.search(r'\$(\S+)', tstring).group(1)
# 提取括号内去掉#的内容
part3 = re.search(r'\(#(.*)\)', tstring).group(1)

extracted_list = [part1, part2, part3]
print(extracted_list)  # 输出: ['Ma', 'GJG', 'G25']

各正则片段解释

  • /(..):精准匹配/,捕获其后2个字符
  • \$(\S+):匹配$,捕获其后所有非空白字符(\S代表非空白,+表示至少一个)
  • \(#(.*)\):匹配(#,捕获#之后到)前的所有内容

这两种方案都能满足你的需求,方案二更适合理解和调试,方案一适合一次性完成提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:50:05