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

如何用unnest_tokens()选择性拆分列:括号内逗号不拆分

解决方案:保留括号内内容的字符串拆分

修正后的代码

library(tidytext)

my_df = data.frame(id=1:4, urls=c("url.a, url.b (c,d), url.c",
                                  "url.d, url.e, url.f",
                                  "url.g, url.h (x, y), url.i",
                                  "url.d,url.e, url.f"))

# 使用带负向断言的正则作为拆分规则
my_df %>%
  unnest_tokens(out, urls, token = 'regex', pattern = ',\\s*(?![^()]*\\))')

预期输出

id         out
1   1       url.a
2   1 url.b (c,d)
3   1       url.c
4   2       url.d
5   2       url.e
6   2       url.f
7   3       url.g
8   3 url.h (x, y)
9   3       url.i
10  4       url.d
11  4       url.e
12  4       url.f

正则规则解释

拆分用的正则,\\s*(?![^()]*\\))专门针对你的四种场景设计:

  • ,:匹配分隔用的逗号
  • \\s*:兼容逗号后有/无空格的情况(覆盖括号外的两种场景)
  • (?![^()]*\\)):负向先行断言,确保当前逗号不在括号内部。逻辑是:从逗号位置往后看,不会出现未匹配左括号就遇到右括号的情况,以此跳过括号内的所有逗号(不管括号内逗号后有无空格)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:10:27