gpt4 book ai didi

逗号和句点之间模式的正则表达式

转载 作者:行者123 更新时间:2023-12-04 20:57:00 25 4
gpt4 key购买 nike

经过数小时的谷歌搜索和无果而终的尝试,我希望有人可以帮助解决这个公认的简单问题(尽管我显然对正则表达式相当陌生)。

我有以下类型的数据:

name <- c("Doe, Mr. John")

我想从中得到“先生”,但实际的头衔各不相同。我的主要问题是如何编写正则表达式以仅捕获“Mr”部分,而没有其他任何内容?

我目前的做法如下:

library(stringr)
str_split(name, "[,\\s.]")[[1]][[3]]

我使用提取设法做到的最好的是:

str_extract(name, ", .*\\.")

我确定有更简单的方法,有人可以帮助我吗?

最佳答案

您可以匹配点之前的所有字母:

> name <- c("Doe, Mr. John")
> str_extract(name, "\\p{L}+(?=\\.)")
[1] "Mr"

在哪里\\p{L}+匹配 1 个或多个字母和 (?=\\.)是一个积极的前瞻,需要紧跟在它们之后。

同样可以用 base R regmatches 来完成/regexpr使用 PCRE 正则表达式(通过将 perl=TRUE 参数传递给 regexpr ):

> regmatches(name, regexpr("\\p{L}+(?=\\.)", name, perl=TRUE))
[1] "Mr"

类似的正则表达式可以与 str_match 一起使用确保我们只匹配逗号、空格之后和点之前的单词:

> str_match(name, ",\\s*(\\p{L}+)\\.")[,2]
[1] "Mr"

关于逗号和句点之间模式的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42088577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com