如何使用 stringr 函数替换精确的字符串?

Met*_*her 7 regex r stringr

我正在尝试使用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)

Cet*_*ttt 6

以下是使用正则表达式的几种可能性:

x <- c("value", "values")
str_replace(x, "value$", "values") #method 1
str_replace(x, "value\\b", "values") #method 2
str_replace(x, "value(?!s)", "values") #method 3
Run Code Online (Sandbox Code Playgroud)

以上所有返回相同

[1] "values" "values"
Run Code Online (Sandbox Code Playgroud)

简短的解释:第一个方法在字符串末尾查找“值”。该符号$与字符串的末尾匹配。

第二种方法查找“值”,后跟单词边界。

第三种方法查找“value”,后跟除符号“s”之外的任何内容。

您可以在此处找到有关 stringr 和正则表达式的有用备忘单 。希望这可以帮助。

  • 我个人在理解正则表达式方面付出了很大的努力。最终对我有帮助的是我在答案中发布的备忘单的第二页,以及几个小时试验他们在那里提供的示例。 (2认同)