我有一个字符串列表,如下:“/home/ricardo/MultiClass/data//F10/1036.txt”
> library(stringr)
> strsplit(cls[1], split= "/")
给我:
#> [[1]] [1] "" "home" "ricardo" "MultiClass" "data"
#> "" "F10" "1036.txt"
如何才能只保住第七名的位置?
#> "F10"
最佳答案
如果你想提取 //
之后的一个或多个字符直到第一个/
或字符串结尾使用
> library(stringr)
> s <- "/home/ricardo/MultiClass/data//F10/1036.txt"
> str_extract(s, "(?<=//)[^/]+")
[1] "F10"
(?<=//)[^/]+
正则表达式模式将找到前面有 2 个斜杠的位置(请参阅 (?<=//)
),然后匹配除 /
之外的一个或多个字符(参见[^/]+
)。
基本 R 解决方案 sub
看起来像
> sub("^.*/([^/]*)/[^/]*$", "\\1", s)
[1] "F10"
详细信息:
-
^
- 字符串开头 -
.*
- 任何 0+ 尽可能多的字符 -
/
- 斜杠(字符串中最后一个,因为前一个模式是贪婪的) -
([^/]*)
- 捕获组 #1 匹配除/
之外的任何 0+ 个字符 -
/
- 最后一个斜杠 -
[^/]*
- 除/
之外的任何 0+ 个字符 -
$
- 字符串结尾。
关于r - R 中的字符串模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42096181/