在大写字母后加一个句点,后跟白色 space

Add a period after capital letters followed by a white space

正如标题所说,有一个字符串,我想在任何大写字母后跟一个空格后添加一个句点,例如:

"Smith S Kohli V "

会变成:

"Smith S. Kohli V. "

这是我得到的最接近的结果:

v <- c("Smith S Kohli V ")
stringr::str_replace_all(v, "[[:upper:]] ", ". ")

"Smith . Kohli . "

我知道我需要添加更多代码来保留大写字母,但我无法弄明白,非常感谢任何帮助。

您可以通过这种方式捕获大写字母后跟 space( ) 字符的匹配项,然后用额外的 dot(.).[= 替换整个匹配项15=]

v <- c("Smith S Kohli V ")
stringr::str_replace_all(v, "([A-Z](?= ))", "\1.")

正则表达式: https://regex101.com/r/uriEYS/1

演示: https://rextester.com/ELKM47734

基础 R 使用 gsub :

v <- c("Smith S Kohli V ")
gsub('([A-Z])\s', '\1. ', v)
#[1] "Smith S. Kohli V. "

使用base R

gsub("(?<=[A-Z])\s", ". ", v,  perl = TRUE)
#[1] "Smith S. Kohli V. "

数据

v <- c("Smith S Kohli V ")