首页 > 解决方案 > 使用正则表达式,在 r 中找到匹配项后如何添加元素?

问题描述

我有一列具有数字长度范围为 10 和 11 的字符串。这是列中一些值的示例:

column=c("5699420001","00409226602")

如何在前四位数字之后(在 10 个字符的字符串中)和前五位数字之后(在具有 11 个字符的字符串中)以及两个长度的后四位数字之后放置连字符?下面提供了输出。我想用stringr这个。

column_standard=c("5699-4200-01","00409-2266-02")

标签: rregexstringr

解决方案


尝试使用这个作为你的表达:

\b(\d{4,5})(\d{4})(\d{2}\b)

它设置了三个捕获组,您以后可以在替换中使用它们来轻松地在它们之间添加连字符。

然后你只需替换为:

\1-\2-\3

感谢@Dunois 指出它在代码中的外观:

column_standard <- sapply(column, function(x) stringr::str_replace(x, "^(\\d{4,5})(\\d{4})(\\d{2})", "\\1\\-\\2-\\3"))

这是一个活生生的例子


推荐阅读