替换字符串中的非重复字符
Replace non-duplicate character in string
嗨,我想用 space 替换正斜杠,但前提是它出现一次。
str_replace_all( 'NOOOOO//ABCDEFGHI/asdfasd//sdkksksks', "/(?!=/)", " ")
此处我希望输出为:NOOOOO//ABCDEFGHI asdfasd//sdkksksks
使用 sub
尝试以下选项:
input <- "NOOOOO//ABCDEFGHI/asdfasd//sdkksksks"
gsub("(?<!/)/(?!/)", " ", input, perl=TRUE)
[1] "NOOOOO//ABCDEFGHI asdfasd//sdkksksks"
这里的策略是使用模式 (?<!/)/(?!/)
,它匹配一个正斜杠,它在两边都被除了另一个正斜杠之外的任何东西包围。
另一种方法是使用捕获组
(^|[^\/\n])\/([^\/\n]|$)
比替换为
您可以使用 (*SKIP)(*FAIL) 和 sub
选项 perl=TRUE
来匹配不应包含在匹配项中的字符,而不是使用环视。
在这种情况下,您可以匹配 2 个或更多不应包含在匹配项中的正斜杠。之后,匹配一个正斜杠替换为 space.
/{2,}(*SKIP)(*F)|/
例如
s <- "NOOOOO//ABCDEFGHI/asdfasd//sdkksksks"
gsub("/{2,}(*SKIP)(*F)|/", " ", s, perl=TRUE)
输出
[1] "NOOOOO//ABCDEFGHI asdfasd//sdkksksks"
嗨,我想用 space 替换正斜杠,但前提是它出现一次。
str_replace_all( 'NOOOOO//ABCDEFGHI/asdfasd//sdkksksks', "/(?!=/)", " ")
此处我希望输出为:NOOOOO//ABCDEFGHI asdfasd//sdkksksks
使用 sub
尝试以下选项:
input <- "NOOOOO//ABCDEFGHI/asdfasd//sdkksksks"
gsub("(?<!/)/(?!/)", " ", input, perl=TRUE)
[1] "NOOOOO//ABCDEFGHI asdfasd//sdkksksks"
这里的策略是使用模式 (?<!/)/(?!/)
,它匹配一个正斜杠,它在两边都被除了另一个正斜杠之外的任何东西包围。
另一种方法是使用捕获组
(^|[^\/\n])\/([^\/\n]|$)
比替换为
您可以使用 (*SKIP)(*FAIL) 和 sub
选项 perl=TRUE
来匹配不应包含在匹配项中的字符,而不是使用环视。
在这种情况下,您可以匹配 2 个或更多不应包含在匹配项中的正斜杠。之后,匹配一个正斜杠替换为 space.
/{2,}(*SKIP)(*F)|/
例如
s <- "NOOOOO//ABCDEFGHI/asdfasd//sdkksksks"
gsub("/{2,}(*SKIP)(*F)|/", " ", s, perl=TRUE)
输出
[1] "NOOOOO//ABCDEFGHI asdfasd//sdkksksks"