如何用R在字符串的最后一次斜杠后用"_"替换空格

Man*_*ino 2 regex r

我有一个字符串列表,对于每个字符串,我需要在最后一个斜杠后用"_"替换所有空格.这是一个可重复的最小例子.

my_list <- list("abc/as 345/as df.pdf", "adf3344/aer4 ffsd.doc", "abc/3455/dfr.xls", "abc/3455/dfr serf_dff.xls", "abc/34 5 5/dfr 345 dsdf 334.pdf")
Run Code Online (Sandbox Code Playgroud)

更换后,结果应该是:

list("abc/as 345/as_df.pdf", "adf3344/aer4_ffsd.doc", "abc/3455/dfr.xls", "abc/3455/dfr_serf_dff.xls", "abc/34 5 5/dfr_345_dsdf_334.pdf")
Run Code Online (Sandbox Code Playgroud)

我想在最后一个斜杠后使用正则表达式匹配文本,然后将""替换为"_",但没有找到实现它的方法.它将是这样的: gsub(pattern, "_", my_list),在哪种模式中将是一个正则表达式:在最后一个斜杠之后匹配每个空格(列表的每个元素中至少有一个斜杠).

Jul*_*ora 5

您可以使用否定前瞻:

gsub(" (?!.*/.*)", "_", unlist(my_list), perl = TRUE)
# [1] "abc/as 345/as_df.pdf"            "adf3344/aer4_ffsd.doc"          
# [3] "abc/3455/dfr.xls"                "abc/3455/dfr_serf_dff.xls"      
# [5] "abc/34 5 5/dfr_345_dsdf_334.pdf"
Run Code Online (Sandbox Code Playgroud)

在这里,我们匹配并替换前面没有更多斜线的所有这些空格.