【发布时间】:2020-06-08 16:33:22
【问题描述】:
我需要将字符串中的信息导出到不同的列中。 更具体地说是字符串中括号的内容;
假设我有一个字符串
a <- "2xExp [K89; K96]; 1xExp [N-Term]; 2xNum [S87(100); S93(100)]"
我要输出的是一个带有括号内容的向量,如果有逗号将它们保存为单独的括号字符串,并删除括号。
例如
tmp <- function(a)
结果
tmp
"[K89]" , "[K96]", "[N-Term]", "[S87]", "[S93]"
到目前为止我的方法:
pattern <- "(\\[.*?\\])"
hits <- gregexpr(pattern, a)
matches <- regmatches(a, hits)
unlisted_matches <- unlist(matches)
结果
"[K89; K96]" "[N-Term]" "[S87(100); S93(100)]"
这确实给了我括号,但仍然没有拆分条款。并且出于任何原因,我无法有效地分离“;”条款。
【问题讨论】:
-
分多个步骤而不是使用一个怪物正则表达式模式在技术上和精神上都更便宜。您当前的模式是很好的第一步。尽管如此,我还是把它当作一个挑战,这是我能做的最好的事情(在合理的时间内):regex101.com/r/LTtcJv/3
-
使用 PCRE
\G运算符(实际上,它是一个 anchor 像^或$),这对于我的答案中的单个正则表达式来说是完全可以的.如果字符串的格式是一致的,那么像这样的单个正则表达式的诡计就足够恕我直言了。