首页 > 解决方案 > 正向 Lookbehind 和 Lookahead 到字符串末尾

问题描述

我的字符串模式如下所示: UNB+UNOC:3+4399945681577+_GLN_Company__+180101:0050+10870我试图提取倒数第​​二个之后的所有内容+,即180101:0050+10870.

到目前为止,我设法180101:0050用这个表达式解决了倒数第二个块,(?<=\+)[^\+]+(?=\+[^\+]*$)但没有包括最后一个块,包括最后一个 +。这是我的示例:regex101

该表达式适用于 R,我稍后仍需要转义字符。这种格式仅用于 Regex101 中的测试目的。

标签: rregex

解决方案


我们可以根据字符串+末尾 ( )的出现来捕获组。$

sub(".*\\+([^+]+\\+[^+]+$)", "\\1", str1)
#[1] "180101:0050+10870"

数据

str1 <- "UNB+UNOC:3+4399945681577+_GLN_Company__+180101:0050+10870"

推荐阅读