xxxxxxxxxx
dffert$V1 <- sub(".*: ", "", dffert$V1)
dffert$V1 <- sub("\\(.*", "(", dffert$V1)
dffert$V1 <- sub("\\(.*", "", dffert$V1)
xxxxxxxxxx
# 第一句
dffert$V1 <- sub(".*: ", "", dffert$V1)
sub(".*: ", "", dffert$V1)
: 这个命令使用正则表达式,匹配字符串中的任意字符(.*
表示匹配任意字符,包括空格)直到遇到冒号和空格 ": ",然后将其替换为空字符串。这样就去掉了字符串中从开头到冒号空格的部分。
xxxxxxxxxx
# 第二句
dffert$V1 <- sub("\\(.*", "(", dffert$V1)
sub("\\(.*", "(", dffert$V1)
: 这个命令使用正则表达式,匹配字符串中以左括号 "(" 开始的部分(\\(
表示匹配左括号),然后将其替换为左括号 "(". 这样就保留了字符串中左括号及其左侧的部分,去掉了右括号及其右侧的部分。
xxxxxxxxxx
# 第三句
dffert$V1 <- sub("\\(.*", "", dffert$V1)
sub("\\(.*", "", dffert$V1)
: 这个命令与第二句类似,使用正则表达式,匹配字符串中以左括号 "(" 开始的部分,然后将其替换为空字符串。这样就去掉了字符串中左括号及其右侧的部分。
在R中,反斜杠 \
是一个转义字符,用于指定特殊字符。在正则表达式中,某些字符前面需要使用反斜杠进行转义,以表示它们的字面含义。
xxxxxxxxxx
dffert$V1 <- sub(".*: ", "", dffert$V1)
这里的正则表达式 ".*: "
中没有特殊字符需要转义。.*
表示匹配任意字符(除了换行符)零次或多次,而 :
是字面字符,不需要转义。
xxxxxxxxxx
dffert$V1 <- sub("\\(.*", "(", dffert$V1)
dffert$V1 <- sub("\\(.*", "", dffert$V1)
这里的正则表达式 "\\(.*"
中包含了左括号 (
,而 (
是正则表达式中的一个特殊字符,表示开始一个捕获组。为了匹配真正的左括号,需要使用双反斜杠 \\
进行转义。
总的来说,使用单个反斜杠 \
表示字符字面量,而使用双反斜杠 \\
表示反斜杠本身。在正则表达式中,需要转义的特殊字符前面通常加上双反斜杠。
sub
和gsub
sub
和 gsub
函数都是用于替换字符串中的模式,但有一个关键区别:
sub
: 替换第一个匹配到的模式。
gsub
: 替换所有匹配到的模式。
例如,如果你有一个字符串 "abcabc",使用 sub("a", "X", "abcabc")
将返回 "Xbcabc",只替换了第一个 "a"。而使用 gsub("a", "X", "abcabc")
将返回 "XbcXbc",替换了所有的 "a"。
在上述三句命令中,由于只使用了一次替换操作,sub
和 gsub
的区别在这里并不明显,因为只有一个匹配到的模式需要替换。如果你的需求是替换所有匹配到的模式,你可以考虑使用 gsub
。