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

基于R语言正则提取会议注册字符串中多产品指定信息

会议注册信息的字符串提取方案需求

我正在收集会议注册信息,表单将每条记录输出为单个字符串,其中包含购买的不同产品(如注册、研讨会、实地考察等),结构重复但内容可变。需要从包含对应产品的记录中提取各产品的指定信息(如注册类型、研讨会类型),理想情况下还需获取每个产品的价格、产品选项及适用的数量(仅会议支持和宴会票)。

示例数据

x <- c("Workshop (May 8) (Amount: 55.00 USD, : Structured Decision Making) Field Trip (May 12) (Amount: 85.00 USD, : AK Wildlife Conservation Center) Total: 140.00 USD",
       "Workshop (May 8) (Amount: 55.00 USD, : Structured Decision Making) Total: 55.00 USD",
       "Conference Registration (Amount: 440.00 USD, : Regular) Total: 440.00 USD",
       "Conference Registration (Amount: 440.00 USD, : Regular) Workshop (May 8) (Amount: 55.00 USD, : TuktuTools and Earth Engine) Total: 495.00 USD",
       "Conference Registration (Amount: 440.00 USD, : Regular) Total: 440.00 USD",
       "Conference Registration (Amount: 440.00 USD, : Regular) Conference Support (Amount: 5.00 USD, Quantity: 10)  Discount: -489.95 Total: 0.05 USD  Coupon used: JFtest",
       "Conference Registration (Amount: 440.00 USD, : Regular) Workshop (May 8) (Amount: 40.00 USD, : Storytelling) Field Trip (May 12) (Amount: 65.00 USD, : Vegetation Walk) Banquet, Additonal Ticket(s) (Amount: 65.00 USD, Quantity: 1)  Discount: -609.94 Total: 0.06 USD  Coupon used: JFtest",
       "Conference Registration (Amount: 180.00 USD, : Single-day (May 10)) Workshop (May 8) (Amount: 55.00 USD, : Structured Decision Making)  Discount: -234.98 Total: 0.02 USD  Coupon used: JFtest",
       "Conference Registration (Amount: 180.00 USD, : Single-day (May 9))  Discount: -179.98 Total: 0.02 USD  Coupon used: JFtest",
       "Conference Registration (Amount: 440.00 USD, : Regular)  Discount: -440.00 Total: 0.00 USD  Coupon used: ARCTIC2023")

已实现的提取操作

目前已完成总费用和优惠券代码的提取:

# 提取总费用
as.numeric(str_extract(x, '(?<=Total: ).+(?= USD)'))

# 提取优惠券代码
str_extract(x, '(?<= Coupon used: ).+')

提取难点与预期输出

在提取特定产品括号内的信息时遇到困难,预期输出如下:

注册类型预期结果

c(NA, NA, "Regular", "Regular",  "Regular", "Regular", "Regular", "Single-day (May 10)", "Single-day (May 9)", "Regular")

研讨会类型预期结果

c("Structured Decision Making", "Structured Decision Making", NA, "TuktuTools and Earth Engine", NA, NA, "Storytelling", "Structured Decision Making", NA, NA)

尝试过的方法及问题

  1. 使用stringr结合if_else的方法,仅在注册为唯一产品时有效:
library(stringr)
library(dplyr)
if_else(
  str_detect(string = x, pattern = 'Conference Registration'),
  str_extract(x, '(?<=USD, : ).+(?=\\) )'),
  NA_character_)

该方法在字符串包含多个产品时,无法精准匹配到注册产品对应的信息。

  1. 尝试gsub直接提取注册相关信息,但因字符串内容可变(含字母、连字符、数字、括号)且可能存在多匹配而受阻。后续尝试硬编码所有可变情况,操作繁琐且出现匹配错误,还因gsub最多支持9个反向引用,无法提取更多产品信息。

现寻求可行的字符串数据提取方案,此前参考的相关帖子未覆盖此类格式可变、需精准提取部分括号内容的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:05:26