使用stringr提取向量元素中最后一个字母前的所有字符
提取字符串最后一个字母前的内容(stringr实现)
核心思路
要提取每个元素中最后一个字母之前的所有字符,关键是用正则定位到字符串里最后一个字母的位置,然后截取其前面的内容。优先使用stringr包的str_extract函数配合正则表达式实现。
代码实现
# 加载stringr包 library(stringr) # 输入向量 x <- c("1H23456789H10", "97845784584H2", "0H987654321H0", "0P45454545A3", "63A00000000000A91") # 提取目标内容 result <- str_extract(x, "^.*(?=[A-Za-z][^A-Za-z]*$)") # 查看结果 print(result)
正则表达式解释
^.*(?=[A-Za-z][^A-Za-z]*$) 各部分含义:
^:匹配字符串的起始位置.*:匹配任意数量的任意字符(贪婪模式,尽可能多匹配)(?=...):正向预查(不捕获内容),用来限定前面.*的匹配范围:[A-Za-z]:匹配任意一个字母[^A-Za-z]*:匹配任意数量的非字母字符$:匹配字符串的结束位置
整体作用是:匹配从开头到最后一个字母之前的所有字符,确保这个字母后面只有非字母字符直到字符串结尾。
运行结果
输出结果与预期完全一致:
[1] "1H23456789" "97845784584" "0H987654321" "0P45454545" "63A00000000000"
内容的提问来源于stack exchange,提问作者nimliug
相关产品推荐
相关产品推荐

