这是对该问题的后续处理:将前一个单词和后一个单词连接到一个与R中的条件匹配的单词
我正在寻找一个正则表达式,它将在逗号后发生的第二个空格处拆分字符串。看下面的例子:
vector <- c("Paulsen", "Kehr,", "Diego",
"Schalper", "Sepúlveda,", "Alejandro",
"Von Housen", "Kush,", "Terry")
X <- paste(vector, collapse = " ")
X
## this is the string I am looking to split:
"Paulsen Kehr, Diego Schalper Sepúlveda, Diego Von Housen Kush, Terry"
Run Code Online (Sandbox Code Playgroud)
每个逗号后的第二个空格是我的正则表达式的标准。因此,我的输出将是:
"Paulsen Kehr, Diego"
"Schalper Sepúlveda, Alejandro"
"Von Housen Kush, Terry"
Run Code Online (Sandbox Code Playgroud)
我想出了一个模式,但效果不佳。
[^ ]+ [^ ]+, [^ ]+( )
Run Code Online (Sandbox Code Playgroud)
与一起使用会strsplit删除所有单词,而不是[^ ]+ [^ ]+, [^ ]+(group-1)仅在第1组(即)分割。我认为我只需要排除完全匹配项,然后再与空格匹配即可。-
正则表达式演示
strsplit(X, "[^ ]+ [^ ]+, [^ ]+( )")
# [1] "" [2] "" [3] "Von Housen Kush, Terry"
Run Code Online (Sandbox Code Playgroud)
任何人都可以想到用正则表达式在每个逗号后找到第二个空格吗?
您可以使用
> strsplit(X, ",\\s+\\S+\\K\\s+", perl=TRUE)
[[1]]
[1] "Paulsen Kehr, Diego" "Schalper Sepúlveda, Alejandro" "Von Housen Kush, Terry"
Run Code Online (Sandbox Code Playgroud)
细节
, -逗号\s+ -1+空格\S+ -1+非空格\K -匹配重置运算符丢弃到目前为止所有匹配的文本\s+ -1+空格