我有一个字符串列表,对于每个字符串,我需要在最后一个斜杠后用"_"替换所有空格.这是一个可重复的最小例子.
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),在哪种模式中将是一个正则表达式:在最后一个斜杠之后匹配每个空格(列表的每个元素中至少有一个斜杠).
您可以使用否定前瞻:
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)
在这里,我们匹配并替换前面没有更多斜线的所有这些空格.