我有以下字符串向量。它包含两个元素。每个元素都由两个折叠的短语组成。
nc -l 5678
我想为向量中的每个元素拆分这些短语。我一直在尝试类似的东西:
nc
这几乎可以满足我的需求:
exchange
我想在图案之后进行分割,但无法弄清楚该怎么做。
我想我已经接近解决方案了,不胜感激。
答案 0 :(得分:4)
您需要匹配大写字母之前 的位置,而不是初始短语的最后一个字母之前的位置(这是您需要的位置之前的一个字符)。您可以将一个非单词边界与一个大写字母预先匹配:
str_split(strings, "\\B(?=[A-Z])")
如果短语可以包含前导大写字母,但在小写字母开始后不包含任何大写字母,则也可以通过向后查找将它们分开,以获取数字或小写字母。这次不需要非单词边界:
strings <- c("SHOCKING NEWS: someone did somethingThis is another phrase",
"This is a phrase with the number 2019This is another phrase")
str_split(strings, "(?<=[a-z0-9])(?=[A-Z])")
答案 1 :(得分:2)
替代解决方案。寻找一个小写字母或数字,再跟一个大写字母,并在它们之间进行分割。
strsplit(strings, "(?<=[[:lower:][:digit:]])(?=[[:upper:]])", perl=TRUE)
[[1]]
[1] "This is a phrase with a Name" "This is another phrase"
[[2]]
[1] "This is a phrase with the number 2019" "This is another phrase"