在每个逗号后查找第二个空格

5

这是对于这个问题的跟进:在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"

每个逗号后的第二个空格是我的的标准。因此,我的输出将是:

"Paulsen Kehr, Diego"
"Schalper Sepúlveda, Alejandro"
"Von Housen Kush, Terry"

我想出了一个模式,但它并不完全有效。
[^ ]+ [^ ]+, [^ ]+( )

strsplit一起使用会删除所有单词,而不是仅在组1处分割(即[^ ]+ [^ ]+, [^ ]+(group-1))。我认为我只需要排除完全匹配并仅与空格后面的匹配。

-- 正则表达式演示
strsplit(X, "[^ ]+ [^ ]+, [^ ]+( )")

# [1] "" [2] "" [3] "Von Housen Kush, Terry"

有人能想到一个来查找每个逗号后第二个空格吗?

1个回答

7
您可以使用:
> strsplit(X, ",\\s+\\S+\\K\\s+", perl=TRUE)
[[1]]
[1] "Paulsen Kehr, Diego"           "Schalper Sepúlveda, Alejandro" "Von Housen Kush, Terry"

查看正则表达式演示

详情

  • , - 逗号
  • \s+ - 匹配一个或多个空格
  • \S+ - 匹配一个或多个非空白字符
  • \K - 匹配重置运算符,舍弃迄今为止匹配的所有文本
  • \s+ - 匹配一个或多个空格

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接