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

新手求教:如何用Regex从指定字符串模式提取目标字段值?

提取指定键值对的正则表达式实现方法

核心思路

你的字符串都是键=值;分隔的结构,正则的核心逻辑是:匹配目标键名,然后捕获等号后到分号(或字符串结尾)的所有内容——用[^;]+匹配除分号外的任意字符,括号()用来标记需要提取的捕获组。


针对示例1的实现

示例1字符串:

Movie=HULK/Incredible HULK;old_actor=Edward Norton;new_actor=Mark Ruffalo

  • 提取old_actor的值,使用正则:

    old_actor=([^;]+)
    

    捕获组会返回Edward Norton

  • 提取new_actor的值,使用正则:

    new_actor=([^;]+)
    

    捕获组会返回Mark Ruffalo


针对示例2的实现

示例2字符串:

Movie=HULK/Incredible HULK;old_movie_release_date=12 December 2008;new_movie_release_date=20 June 2012

  • 提取old_movie_release_date的值,使用正则:

    old_movie_release_date=([^;]+)
    

    捕获组会返回12 December 2008

  • 提取new_movie_release_date的值,使用正则:

    new_movie_release_date=([^;]+)
    

    捕获组会返回20 June 2012


进阶:一次性提取多个键(命名捕获组)

如果想一次匹配多个目标键,可使用命名捕获组,方便直接通过组名获取结果,不用记捕获组顺序:

针对示例1的组合正则:

old_actor=(?P<old_actor>[^;]+);new_actor=(?P<new_actor>[^;]+)

针对示例2的组合正则:

old_movie_release_date=(?P<old_date>[^;]+);new_movie_release_date=(?P<new_date>[^;]+)

代码示例(Python)

import re

# 处理示例1
str1 = "Movie=HULK/Incredible HULK;old_actor=Edward Norton;new_actor=Mark Ruffalo"
match1_old = re.search(r'old_actor=([^;]+)', str1)
match1_new = re.search(r'new_actor=([^;]+)', str1)
print(match1_old.group(1))  # 输出 Edward Norton
print(match1_new.group(1))  # 输出 Mark Ruffalo

# 处理示例2
str2 = "Movie=HULK/Incredible HULK;old_movie_release_date=12 December 2008;new_movie_release_date=20 June 2012"
match2_old = re.search(r'old_movie_release_date=([^;]+)', str2)
match2_new = re.search(r'new_movie_release_date=([^;]+)', str2)
print(match2_old.group(1))  # 输出 12 December 2008
print(match2_new.group(1))  # 输出 20 June 2012

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:55:19