我认为这会更简单,但我的字符串后面没有':',字符串中包含:。我想将:附加到不以:结尾的字符串,而忽略包含:的字符串。
words
[1] "Bajos" "Ascensor" "habs.:3"
gsub('\\b(?!:)', '\\1:', words, perl = TRUE)
[1] ":Bajos:" ":Ascensor:" ":habs:.::3:"
grep('\\W', words)
[1] 3
grep('\\w', words)
[1] 1 2 3 # ?期望产出:
'Bajos:' 'Ascensor:' 'habs.:3'发布于 2022-09-09 19:57:21
使用
"(\\p{L}+)\\b(?![\\p{P}\\p{S}])"见正则证明。
解释
--------------------------------------------------------------------------------
(\p{L}+) one or more letters (group #1)
--------------------------------------------------------------------------------
\b word boundary
--------------------------------------------------------------------------------
(?![\p{P}\p{S}]) no punctuation allowed on the right
--------------------------------------------------------------------------------R代码片段
gsub("(\\p{L}+)\\b(?![\\p{P}\\p{S}])", "\\1:", text, perl=TRUE)发布于 2022-09-09 19:58:30
sub("^([^:]*)$", "\\1:", words)
# [1] "Bajos:" "Ascensor:" "habs.:3" 或
nocolon <- !grepl(":", words)
words[nocolon] <- paste0(words[nocolon], ":")
words
# [1] "Bajos:" "Ascensor:" "habs.:3" https://stackoverflow.com/questions/73666909
复制相似问题