寻找一个正则表达式,它将从一个字符串中删除单个字符,但有一些条件。一个正则表达式将删除字符串中的所有单个字符,而另一个正则表达式将仅删除第一个和最后一个字符之间的单个字符。见下面的样品。
在
names <- c("John C. Smith", "Chris T. Anderson", "Mary H. Jane",
"J. J. Smith", "J. Thomas")
之后:
"John Smith", "Chris Anderson", "Mary Jane", "Smith", "Thomas"
在
names <- c("John C. Smith", "Chris T. Anderson", "Mary H. Jane",
"J. J. Smith", "J. Thomas")
之后:
"John Smith", "Chris Anderson", "Mary Jane", "J. J. Smith", "J. Thomas"
答案 0 :(得分:6)
编辑,因为我错过了部分问题
gsub可以从您的数据中删除模式。在这里,我们删除前后都有多个字符串的单个字符。
contentSize
摆脱所有这些。
gsub("(\\w\\w)\\W+\\w\\W+(\\w\\w)", "\\1 \\2", names)
[1] "John Smith" "Chris Anderson" "Mary Jane" "J. J. Smith" "J. Thomas"
答案 1 :(得分:1)
这是另一个选项
gsub("\\b[A-Z][[:punct:]]\\s*", "", names)
#[1] "John Smith" "Chris Anderson" "Mary Jane" "Smith"
#[5] "Thomas"
或者第二种情况
sub("(\\w+)\\s+([A-Z][[:punct:]]\\s*){1,}", "\\1 ", names)
#[1] "John Smith" "Chris Anderson" "Mary Jane" "J. J. Smith"
#[5] "J. Thomas"