gsub 替换一组字符后的文本
gsub replace text after set of characters
我有很多错误消息需要清理。
一些错误以文本 "(sec): 0.xxx"
结尾
我正在尝试使用 gsub 删除(秒)
之后的所有内容
data$Message <- gsub("(sec).*", "", data$Message, perl = TRUE)
此 returns 之后的所有内容 (
我知道只使用“:”或“)”会很容易,但它会影响其他我不想更改的错误。
有没有一种方法可以使用 gsub 查看多个字符 - 如“(sec)” - 而不是一个?
在一个相关的说明中,他们的符号代表类似于“。”的任何数字(不包括文本)?
您可以使用正则表达式 look behind ?<=
来避免 sec
被删除,同时断言删除的模式遵循 sec
,因此 (?<=sec\)).*
将删除 sec)
之后的所有内容,但不会删除 sec)
本身:
gsub("(?<=sec\)).*", "", "(sec): 0.xxx", perl = TRUE)
# [1] "(sec)"
您可以 select 表达式的第一部分(括号内)并省略其余部分:
gsub('(^.*\(sec\)).*', '\1', '(sec): 0.xxx')
## [1] "(sec)"
我有很多错误消息需要清理。
一些错误以文本 "(sec): 0.xxx"
结尾
我正在尝试使用 gsub 删除(秒)
data$Message <- gsub("(sec).*", "", data$Message, perl = TRUE)
此 returns 之后的所有内容 (
我知道只使用“:”或“)”会很容易,但它会影响其他我不想更改的错误。
有没有一种方法可以使用 gsub 查看多个字符 - 如“(sec)” - 而不是一个? 在一个相关的说明中,他们的符号代表类似于“。”的任何数字(不包括文本)?
您可以使用正则表达式 look behind ?<=
来避免 sec
被删除,同时断言删除的模式遵循 sec
,因此 (?<=sec\)).*
将删除 sec)
之后的所有内容,但不会删除 sec)
本身:
gsub("(?<=sec\)).*", "", "(sec): 0.xxx", perl = TRUE)
# [1] "(sec)"
您可以 select 表达式的第一部分(括号内)并省略其余部分:
gsub('(^.*\(sec\)).*', '\1', '(sec): 0.xxx')
## [1] "(sec)"