删除字符串中的单个字符

时间:2017-01-02 23:34:22

标签: r regex

寻找一个正则表达式,它将从一个字符串中删除单个字符,但有一些条件。一个正则表达式将删除字符串中的所有单个字符,而另一个正则表达式将仅删除第一个和最后一个字符之间的单个字符。见下面的样品。

删除所有单个字符:

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"

2 个答案:

答案 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"