gpt4 book ai didi

regex - 仅当两者都存在时才从字符串的开头和结尾删除引号

转载 作者:行者123 更新时间:2023-12-04 18:12:03 27 4
gpt4 key购买 nike

我想清理一个包含转义引号的字符串。我想删除字符串结尾和开头的转义引号,但保持字符串中的所有引号完整无缺。我想出的是以下内容。

library(stringr)
s1 <- "\"He said:\"Hello\" - some word\""
str_replace_all(s1, "(^\\\")|(\\\"$)", "")

> [1] "He said:\"Hello\" - some word"

我现在正在苦苦挣扎的是,当且仅当开头和结尾都有引号时,我只想删除引号。否则不会。以下表达式错误地删除了前导表达式。
s2 <- "\"Hello!\" he said"
str_replace_all(s2, "(^\\\")|(\\\"$)", "")

> [1] "Hello!\" he said"

这里我的正则表达式应该表明我只想删除它们,以防整个字符串用转义引号包裹。我怎样才能做到这一点?

最佳答案

以下正则表达式似乎适用于您的示例:

s <- c("\"He said:\"Hello\" - some word\"", "\"Hello!\" he said")

正则表达式使用反向引用( \\1 )仅返回前导引号内的字符串 ^\"和尾随报价 \"$ :
r <- gsub("^\"(.*)\"$", "\\1", s)

这导致:
cat(r, sep="\n")
He said:"Hello" - some word
"Hello!" he said

关于regex - 仅当两者都存在时才从字符串的开头和结尾删除引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11718938/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com