r - 使用正则表达式,在 r 中找到匹配项后如何添加元素?
问题描述
我有一列具有数字长度范围为 10 和 11 的字符串。这是列中一些值的示例:
column=c("5699420001","00409226602")
如何在前四位数字之后(在 10 个字符的字符串中)和前五位数字之后(在具有 11 个字符的字符串中)以及两个长度的后四位数字之后放置连字符?下面提供了输出。我想用stringr
这个。
column_standard=c("5699-4200-01","00409-2266-02")
解决方案
尝试使用这个作为你的表达:
\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"))
这是一个活生生的例子。
推荐阅读
- python - 纬度/经度图的纵横比
- javascript - 当我刷新或启动站点时,图像滑块的图像被隐藏
- python-3.x - 基于索引增量 Python Pandas Dataframe 查找和添加缺失的列值
- python - 使用组的最小/最大日期为 Pandas 中的组添加缺失日期
- bash - 别名命令执行不正确
- python - 在python中删除重复的整数
- c - C中文件输入的模式识别
- python - 为什么不能从 np.ndarray 的实例调用 __array_function__?
- dart - 如何制作新的数组嵌套排序地图?
- javascript - 按子数组中的值对数组进行排序