我有三个单位字符串,每个字符串都包含逗号(","(。每个单位字符串也以大写字母开头。这些字符串以 paste0(( 方式连接,使得逗号 (","( 和没有空格分隔原始单位字符串。
我在下面提供了 R 代码,以便为我的问题提供更多上下文:
string1 <- "I like dogs, cats, and pigs"
string2 <- "Community health centers, businesses, stores"
string3 <- "Jamie Foxx sings, dances, and acts"
string_combined <- paste0(string1,",",string2,",",string3)
string_combined
[1] "I like dogs, cats, and pigs,Community health centers, businesses, stores,Jamie Foxx sings, dances, and acts"
从上面的控制台输出可以看出,字符串在以下位置相遇:
- 第一个字符串的最后一个小写字母
- 逗号
- 第二个字符串的第一个大写字母
- 单位字符串的连接处没有空格
我已经使用str_view_all(string = string_combined,pattern = ",\S")
来定位字符串连接的位置,但我不确定如何恢复原始单位字符串(string1
,string2
,string3
(。
问题:如何从较大的字符串 (string_combined
( 中恢复原始单位字符串,这是单位字符串的串联,认识到本身包含逗号的原始单位字符串在串联字符串中用逗号分隔。
也许有人可以帮助回答我的问题。 谢谢。
您可以在strsplit
中使用上述模式
strsplit(string_combined, "(?<=[a-z]),(?=[A-Z])",perl = TRUE)[[1]]
#[1] "I like dogs, cats, and pigs" "Community health centers, businesses, stores"
#[3] "Jamie Foxx sings, dances, and acts"
与stringr::str_split
类似
stringr::str_split(string_combined, "(?<=[a-z]),(?=[A-Z])")[[1]]
这将字符串拆分为小写字母 (a-z
(,后跟逗号 (,
(,后跟大写字母 (A-Z
(。
以下方法应该有效:
str_split(string_combined, ',(?=[[:upper:]])')
正则表达式的(?=[[:upper:]])
部分是指后跟大写后者的模式,它由逗号 (,
( 分隔。它一起找到一个逗号,该逗号后跟一个大写字母,并用逗号分隔。