首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用单词:r替换未接的单词:

用单词:r替换未接的单词:
EN

Stack Overflow用户
提问于 2022-09-09 19:52:46
回答 2查看 42关注 0票数 1

我认为这会更简单,但我的字符串后面没有':',字符串中包含:。我想将:附加到不以:结尾的字符串,而忽略包含:的字符串。

代码语言:javascript
复制
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 # ?

期望产出:

代码语言:javascript
复制
'Bajos:' 'Ascensor:' 'habs.:3'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-09 19:57:21

使用

代码语言:javascript
复制
"(\\p{L}+)\\b(?![\\p{P}\\p{S}])"

正则证明

解释

代码语言:javascript
复制
--------------------------------------------------------------------------------
  (\p{L}+)                 one or more letters (group #1) 
--------------------------------------------------------------------------------
  \b                       word boundary
--------------------------------------------------------------------------------
  (?![\p{P}\p{S}])         no punctuation allowed on the right
--------------------------------------------------------------------------------

R代码片段

代码语言:javascript
复制
gsub("(\\p{L}+)\\b(?![\\p{P}\\p{S}])", "\\1:", text, perl=TRUE)
票数 1
EN

Stack Overflow用户

发布于 2022-09-09 19:58:30

代码语言:javascript
复制
sub("^([^:]*)$", "\\1:", words)
# [1] "Bajos:"    "Ascensor:" "habs.:3"   

代码语言:javascript
复制
nocolon <- !grepl(":", words)
words[nocolon] <- paste0(words[nocolon], ":")
words
# [1] "Bajos:"    "Ascensor:" "habs.:3"   
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73666909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档