R语言中移除字符串内带数字的下划线及8位数字前下划线的方法
嘿,这个问题用R里的正则表达式工具就能轻松搞定,我给你分两种需求分别说明:
需求1:移除8位数字前的下划线并删除该8位数字
针对你给出的例子(比如test_folder_20180409→test_folder、test_sql.sql_20180409→test_sql.sql),可以用gsub()函数配合精准的正则表达式实现:
# 处理单个字符串 str1 <- "test_folder_20180409" gsub("_\\d{8}$", "", str1) # 输出结果: "test_folder" str2 <- "test_sql.sql_20180409" gsub("_\\d{8}$", "", str2) # 输出结果: "test_sql.sql"
正则说明:
_:匹配目标下划线;\\d{8}:匹配正好8位数字(\\d代表数字,{8}指定位数);$:限定匹配的内容必须在字符串结尾(如果你的8位数字可能出现在字符串中间,去掉$即可,比如gsub("_\\d{8}", "", "abc_12345678_def")会得到abc_def)。
需求2:移除所有带下划线的数字部分
如果是要移除所有下划线+任意长度数字的组合(比如test_123_file_4567→test_file),同样用gsub(),只是调整正则表达式:
str3 <- "test_123_file_4567" gsub("_\\d+", "", str3) # 输出结果: "test_file" # 复杂场景测试 str4 <- "abc_9876_x_y_12" gsub("_\\d+", "", str4) # 输出结果: "abc_x_y"
正则说明:
\\d+:匹配一个或多个数字(+表示至少出现1次),这样不管数字是几位,只要前面跟下划线,都会被匹配并替换为空字符串。
内容的提问来源于stack exchange,提问作者martinkabe
相关产品推荐
相关产品推荐

