提问人:Simon Harmel 提问时间:9/23/2023 更新时间:9/23/2023 访问量:27
如何找到字符串向量中单词之间的分隔符
How to find the separator between words in a string vector
问:
我想知道只要分隔符在字符串向量中定义,如何找到两部分单词之间的公共分隔符?"[^[:alnum:]]+"
例如,在向量中,公共分隔符是 ,而在向量中,公共分隔符是 。first
"."
second
"_"
是否有可能有一个函数接受像 或 这样的向量,并输出 或 ?first
second
"."
"_"
first = c("L2DF.L2DA", "L2G.L2DA", "L2L.L2DA", "L2M.L2DA", "L2P.L2DA",
"L2V.L2DA", "L2G.L2DF", "L2L.L2DF", "L2M.L2DF", "L2P.L2DF", "L2V.L2DF",
"L2L.L2G", "L2M.L2G", "L2P.L2G", "L2M.L2L", "L2P.L2L", "L2P.L2M",
"L2R.L2DA", "L2R.L2DF", "L2R.L2G", "L2R.L2L", "L2R.L2M", "L2R.L2P",
"L2V.L2R", "L2V.L2G", "L2V.L2L", "L2V.L2M", "L2V.L2P")
second = c("L2DF_L2DA", "L2G_L2DA", "L2L_L2DA", "L2M_L2DA", "L2P_L2DA",
"L2V_L2DA", "L2G_L2DF", "L2L_L2DF", "L2M_L2DF", "L2P_L2DF", "L2V_L2DF",
"L2L_L2G", "L2M_L2G", "L2P_L2G", "L2M_L2L", "L2P_L2L", "L2P_L2M",
"L2R_L2DA", "L2R_L2DF", "L2R_L2G", "L2R_L2L", "L2R_L2M", "L2R_L2P",
"L2V_L2R", "L2V_L2G", "L2V_L2L", "L2V_L2M", "L2V_L2P")
答:
0赞
Mark
9/23/2023
#1
你可以有这样的东西:
sep_extract <- \(s) stringr::str_extract_all(s, "[^[:alnum:]]") |> unlist() |> unique()
# or using base R:
sep_extract <- \(s) gsub("[a-zA-Z0-9]", "", s) |> unique()
sep_extract(first) # [1] "."
sep_extract(second) # [1] "_"
笔记:
- 只有当您知道字符串中唯一的非字母数字是分隔符时,这才有效。如果不是这种情况,则必须指定哪个是哪个,或者使用更复杂的正则表达式。
- 如果您使用 ,您可以从正则表达式中删除 ,因为它无论如何都会选择第二个。
+
str_extract_all()
- 如果您希望将每个组合保留为自己的内容,可以删除 .
unlist()
评论