在 R 中最后一次出现模式后删除字符串中的所有字符
Remove all characters in a string after the last ocurrence of a pattern in R
我想在 R 中删除字符串中最后一次出现特定模式之后的所有字符。
例如:
string = "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge regthyty "
我想删除最后一次出现模式 "ge"
之后的所有内容,最后得到:
"asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge"
.
您可以在此处使用否定前瞻:
string <- "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge regthyty "
output <- sub("\bge (?!.*\bge\b).*", "ge", string, perl=TRUE)
output
[1] "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge"
您可以使用捕获组来捕获最后一个“ge”之前的所有字符串 (^(.*ge)
),然后用该捕获组 (\1
) 替换整个字符串。
sub('^(.*ge).+$', '\1', string)
[1] "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge"
我想在 R 中删除字符串中最后一次出现特定模式之后的所有字符。
例如:
string = "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge regthyty "
我想删除最后一次出现模式 "ge"
之后的所有内容,最后得到:
"asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge"
.
您可以在此处使用否定前瞻:
string <- "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge regthyty "
output <- sub("\bge (?!.*\bge\b).*", "ge", string, perl=TRUE)
output
[1] "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge"
您可以使用捕获组来捕获最后一个“ge”之前的所有字符串 (^(.*ge)
),然后用该捕获组 (\1
) 替换整个字符串。
sub('^(.*ge).+$', '\1', string)
[1] "asdsads dfdsfd>x 442 /<sdasvre (geqwe) ge ge ge"