r - 在每个逗号后查找第二个空格
问题描述
这是对这个问题的跟进:Concatenate previous and later words to a word that match a condition in 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"
每个逗号后的第二个空格是我的regex的标准。所以,我的输出将是:
"Paulsen Kehr, Diego"
"Schalper Sepúlveda, Alejandro"
"Von Housen Kush, Terry"
我想出了一个模式,但它不是很有效。
[^ ]+ [^ ]+, [^ ]+( )
与它一起使用strsplit
会删除所有单词,而不是[^ ]+ [^ ]+, [^ ]+(group-1)
仅在 group-1 (ie ) 处拆分。我想我只需要排除完整匹配,然后只匹配空格。--
正则表达式演示
strsplit(X, "[^ ]+ [^ ]+, [^ ]+( )")
# [1] "" [2] "" [3] "Von Housen Kush, Terry"
谁能想到一个正则表达式来查找每个逗号后的第二个空格?
解决方案
您可以使用
> 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+ 空格
推荐阅读
- powershell - PowerShell 属性问题
- php - php循环内的html表单
- jquery - jQuery opacity/fade animation only works once
- reactjs - React-table 开关排序图标
- java - 尝试从 DefaultListModel 对象中删除元素
- javascript - 画布奇怪的问题,失去一切时速度快 2 倍
- php - 浏览器中的模型 SQL 语法错误是否有更简单的快捷方式替换
- c++ - 如何在 C 库的实现文件中使用 C++ STL 容器?
- java - 使用 join() 的 Java 多线程程序在计算相邻数字的总和时给出错误的结果
- android - Android App 只能拍照不能录视频