在每个逗号后查找第二个 space
Finding second space after each comma
这是对这个问题的跟进:
我正在寻找一个正则表达式,它在逗号后的第二个 space 处拆分字符串。看下面的例子:
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"
每个逗号后的第二个space是我的regex的标准。所以,我的输出将是:
"Paulsen Kehr, Diego"
"Schalper Sepúlveda, Alejandro"
"Von Housen Kush, Terry"
我想出了一个模式,但它不太管用。
[^ ]+ [^ ]+, [^ ]+( )
将它与 strsplit
一起使用会删除所有单词,而不是仅在第 1 组(即 [^ ]+ [^ ]+, [^ ]+(group-1)
)处拆分。我想我只需要排除完整匹配项并仅在之后与 space 匹配。 --
regex demo
strsplit(X, "[^ ]+ [^ ]+, [^ ]+( )")
# [1] "" [2] "" [3] "Von Housen Kush, Terry"
谁能想出一个 regex 来找到每个逗号 后的 第二个 space?
您可以使用
> strsplit(X, ",\s+\S+\K\s+", perl=TRUE)
[[1]]
[1] "Paulsen Kehr, Diego" "Schalper Sepúlveda, Alejandro" "Von Housen Kush, Terry"
详情
,
- 逗号
\s+
- 1+ 个空格
\S+
- 1+ 个非空格
\K
- 匹配重置运算符丢弃目前匹配的所有文本
\s+
- 1+ 个空格
这是对这个问题的跟进:
我正在寻找一个正则表达式,它在逗号后的第二个 space 处拆分字符串。看下面的例子:
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"
每个逗号后的第二个space是我的regex的标准。所以,我的输出将是:
"Paulsen Kehr, Diego"
"Schalper Sepúlveda, Alejandro"
"Von Housen Kush, Terry"
我想出了一个模式,但它不太管用。
[^ ]+ [^ ]+, [^ ]+( )
将它与 strsplit
一起使用会删除所有单词,而不是仅在第 1 组(即 [^ ]+ [^ ]+, [^ ]+(group-1)
)处拆分。我想我只需要排除完整匹配项并仅在之后与 space 匹配。 --
regex demo
strsplit(X, "[^ ]+ [^ ]+, [^ ]+( )")
# [1] "" [2] "" [3] "Von Housen Kush, Terry"
谁能想出一个 regex 来找到每个逗号 后的 第二个 space?
您可以使用
> strsplit(X, ",\s+\S+\K\s+", perl=TRUE)
[[1]]
[1] "Paulsen Kehr, Diego" "Schalper Sepúlveda, Alejandro" "Von Housen Kush, Terry"
详情
,
- 逗号\s+
- 1+ 个空格\S+
- 1+ 个非空格\K
- 匹配重置运算符丢弃目前匹配的所有文本\s+
- 1+ 个空格