string = c("apple", "apples", "applez")
grep("apple", string)
Run Code Online (Sandbox Code Playgroud)
这将为我提供所有三个元素的索引string.但我希望在单词"apple"上完全匹配(即我只想grep()返回索引1).
我正在寻找一个正则表达式来 grep 整个单词,包括用数字或下划线分隔的单词。\\b将数字和下划线视为单词的一部分,而不是边界。
例如,我想在“DOG MOUSE CAT”、“DOG MOUSE:CAT”和“DOG_MOUSE9CAT”以及表达式的末尾或开头捕捉鼠标,如“MOUSE9CAT”和“DOG_MOUSE” . 基本上,我正在寻找的边界是任何非大写字母字符加上行/表达式的开头和结尾(可能会遗漏\\b此处捕获的其他一些情况)。
我试过了:
"[[0-9_]\\b]MOUSE[[0-9_]\\b]"
"[[0-9_]|\\b]MOUSE[[0-9_]|\\b]"
"[$|[^A-Z]]MOUSE[^|[^A-Z]]"
"[?<=^|[^A-Z]]MOUSE[?=$|[^A-Z]]"
Run Code Online (Sandbox Code Playgroud)
他们都没有工作。
我实际上正在寻找几个词(基于一个长的值向量),所以最终结果应该看起来像
grep(paste("\\b", paste(searchwords, collapse = "\\b|\\b"), "\\b"), targettext)
Run Code Online (Sandbox Code Playgroud)
(使用不同的分隔符,因为\\b对我来说太严格了)。
(这与用户 Nick Sabbe 在此处的评论中提出的问题类似:Using grep in R to find strings as whole words (but not strings as part of words))
我正在尝试使用stringr函数替换列中的确切字符串。
我尝试的数据集是这样的:
data <- data.frame(
column = c("Value", "Values", "Value", "Values")
)
data
column
1 Value
2 Values
3 Value
4 Values
Run Code Online (Sandbox Code Playgroud)
我想用“值”替换“值”。我尝试过str_replace(data$column, "Value", "Values"),但这会产生以下不需要的替换:
[1] "Values" "Valuess" "Values" "Valuess"
Run Code Online (Sandbox Code Playgroud)
我希望输出是:
[1] "Values" "Values" "Values" "Values"
Run Code Online (Sandbox Code Playgroud) 我有一个data.frame命名all,其中包含一系列因子,这些因素包括"word","nonword"以及其他一些因素.我的目标是只选择具有因子值"word"的行.
我的解决方案grep("\bword\b",all[,5])没有返回
如何识别单词边界?