r-如何使用Regex只删除以句点结尾的单词



我正在尝试使用regex:从姓氏列表中删除后缀

names <- c("John max Jr.", "manuel cortez", "samuel III", "Jameson")
lapply(names, function(x) str_extract(x, ".*[^\s.*\.$]"))

输出:

[1] "John max Jr"
[[2]]
[1] "manuel cortez"
[[3]]
[1] "samuel III"
[[4]]
[1] "Jameson"

我目前正在做的事情不起作用。。。。我试图删除所有以句点结尾的单词。如果你能帮我解决这个问题并解释一下,我将不胜感激。我也需要去掉罗马数字,但希望我能在学会去掉句号后弄清楚。

期望输出:

John max
manuel cortez
samuel
Jameson

更新以删除罗马数字:

lapply(names, function(x) str_extract(x, ".*[^(\s.*\.$)|(\sI{2}+)]"))

如果我们只想remove什么,也许str_remove()更好:

library(stringr)
lapply(names, function(x) str_remove(x, "\w+\.$")) |>
trimws()
"John max"      "manuel cortez" "samuel III"    "Jameson"     

最新更新