正则表达式在逗号和句点之间抓取字符串

Ted*_*sby 3 regex r

我有这样的字符串

Allen, Mr. William Henry
Run Code Online (Sandbox Code Playgroud)

而且我想抓住'先生'部分.

我试过这个

[,](.*?)[.]
Run Code Online (Sandbox Code Playgroud)

但这抓住了'先生'

我怎么才能抓住'先生'部分?

Wik*_*żew 6

您可以使用和使用常规TRE正则表达式进行捕获 :Mrregmatchesregexec

> s <- "Allen, Mr. William Henry"
> m <- regmatches(s, regexec(",\\s*([^.]*)", s))
> m[[1]][2]
[1] "Mr"
Run Code Online (Sandbox Code Playgroud)

图案细节:

  • , - 逗号
  • \\s* - 零个或多个空格
  • ([^.]*) - 第1组捕获0+以外的字符 .

请参阅正则表达式演示.

  • 聪明 - 我从未使用过`regexec` - 可能要开始 (2认同)
  • `regexec()`保持*捕获*文本,而`regexpr()`只保持*匹配*. (2认同)