正则表达式 – r分隔符不在括号中
发布时间:2020-12-14 06:06:43 所属栏目:百科 来源:网络整理
导读:我目前正在尝试在管道分隔符上拆分一个字符串: 999|150|222|(123|145)|456|12,260|(10|10000) 问题是我不想拆分|在括号内,我只想在括号外面分割这个字符. 这只是在每个|分裂字符,产生我不想要的结果: x - '999|150|222|(123|145)|456|12,260|(10|10000)'m
我目前正在尝试在管道分隔符上拆分一个字符串:
999|150|222|(123|145)|456|12,260|(10|10000) 问题是我不想拆分|在括号内,我只想在括号外面分割这个字符. 这只是在每个|分裂字符,产生我不想要的结果: x <- '999|150|222|(123|145)|456|12,260|(10|10000)' m <- strsplit(x,'|') [[1]] [1] "999" ? ?"150" ? ?"222" ? ?"(123" ? "145)" ? "456" ? ?"12,260" "(10" ?? [9] "10000)" 我希望得到以下结果,保持括号内的所有内容: [[1]] [1] "999" ? ? ? ?"150" ? ? ? ?"222" ? ? ? ?"(123|145)" ?"456" ? ? ?? [6] "12,260" ? ? "(10|10000)" 任何帮助赞赏. 解决方法
您可以使用perl = T和一些黑暗魔法来打开
PCRE :
x <- '999|150|222|(123|145)|456|12,260|(10|10000)' strsplit(x,'([^)]*)(*SKIP)(*F)||',perl=T) # [[1]] # [1] "999" "150" "222" "(123|145)" "456" # [6] "12,260" "(10|10000)" 我们的想法是跳过括号中的内容. Live demo 在alternation operator的左侧,我们匹配括号中的任何内容,使子模式失败并强制正则表达式引擎不使用回溯控制重试子字符串.交替运算符的右侧匹配| (在括号之外,我们想要的……) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |