我有一个像这样的字符串
Allen, Mr. William Henry
我想抓住'先生'部分。
我试过这个
[,](.*?)[.]
但这抓住了'先生'
我怎样才能抓住'先生'部分?
答案 0 :(得分:6)
您可以使用Mr
和regmatches
使用常规TRE正则表达式捕获 regexec
:
> s <- "Allen, Mr. William Henry"
> m <- regmatches(s, regexec(",\\s*([^.]*)", s))
> m[[1]][2]
[1] "Mr"
模式详情:
,
- 逗号\\s*
- 零个或多个空格([^.]*)
- 第1组捕获除.
请参阅regex demo。
答案 1 :(得分:1)
如果数据中的每个字符串都是
形式 "NAME, TITLE. FIRSTNAME(S)
然后你也可以使用
x <- "Allen, Mr. William Henry"
gsub("(.*),\\s(.*)\\.(.*)", "\\2", x)
答案 2 :(得分:1)
或者这个
s <- "Allen, Mr. William Henry"
sub(".*,\\s{0,}(\\w+)\\..*", "\\1", s)
.*, any characters until comma
\\s{0,} spaces 0 to as many
\\w+ words at least one
\\..* period followed by any character(s)
the "\\1" keep the pattern within the parenthesis
答案 3 :(得分:0)
我们可以使用str_extract
library(stringr)
str_extract(s, "\\w+(?=\\.)")
#[1] "Mr"