【发布时间】:2019-03-30 07:46:32
【问题描述】:
需要在 R - Perl 中编写一个正则表达式,它会在逗号 '' 上拆分字符串,但会跳过圆括号之间的所有逗号实例。挑战在于确保括号是平衡的,即闭括号映射回其开括号。
在下面的正则表达式代码中,一切正常,除非您注意到 - 括号不平衡,内端括号正在考虑用于外部开始括号
text <- "PEANUTS (PEANUTS, PEANUT OIL AND/OR COTTONSEED OIL AND/OR CANOLA OIL AND/OR SOYBEAN OIL, SALT), GOLDEN RAISINS (RAISINS, SULFUR DIOXIDE), DRIED CRANBERRIES (CRANBERRIES, SUGAR, CITRIC ACID, SUNFLOWER OIL (PROCESSING AID), ELDERBERRY JUICE CONCENTRATE (COLOR)), ALMONDS (ALMONDS, PEANUT OIL AND/OR COTTONSEED OIL AND/OR CANOLA OIL AND/OR SOYBEAN OIL, SALT), MACADAMIAS (MACADAMIAS, MALTODEXTRIN, SALT)"
strsplit(text, '\\([^*)^)]*\\)(*SKIP)(*F)|\\,', perl=T)
使用上述正则表达式代码,蔓越莓干 未正确拆分。请参考此处的输出截图:Regex Code Output
这里的任何帮助将不胜感激..谢谢!
【问题讨论】:
-
请不要发布代码/数据/错误的图像,只发布文本本身。几个原因是直接的:我无法将图像中的代码或数据复制到我的 R 控制台并尝试一下,并且我选择不手动转录它。一些原因不太明显但仍然很重要,包括:它会破坏屏幕阅读器hard;搜索引擎不阅读它们,因此搜索不会找到它;移动设备的屏幕尺寸可能是一个限制因素。参考:meta.stackoverflow.com/a/285557/3358272
-
一旦你进入嵌套匹配括号,我建议你进入正则表达式的标记。
标签: r regex pcre regex-group