gpt4 book ai didi

regex - 在第一次出现模式之后和另一个模式之前提取字符串

转载 作者:行者123 更新时间:2023-12-02 04:14:04 24 4
gpt4 key购买 nike

我有以下字符串:

strings <- c("David, FC; Haramey, S; Devan, IA", 
"Colin, Matthew J.; Haramey, S",
"Colin, Matthew")

如果我想要所有字符串的最后一个缩写/名字,我可以使用以下内容:

sub(".*, ", "", strings)
[1] "IA" "S" "Matthew"

这会删除最后 ", " 之前的所有内容

但是,我对如何获取第一个缩写/名字感到困惑。我知道必须删除 first ", " 之前的所有内容,但随后我必须删除任何空格、分号(如果有)之后的所有内容。

要明确的是,我想要的输出是:

c("FC", "Matthew", "Matthew")

任何指针都会很棒。

摆弄我可以得到第一个姓氏gsub( ".*$", "", strings )

最佳答案

你可以使用

> gsub( "^[^\\s,]+,\\s+([^;.\\s]+).*", "\\1", strings, perl=T)
[1] "FC" "Matthew" "Matthew"

请参阅regex demo

说明:

  • ^ - 字符串开头
  • [^\\s,]+ - 1 个或多个除空格或 , 之外的字符
  • , - 文字逗号
  • \\s+ - 1 个或多个空格
  • ([^;.\\s]+) - 第 1 组匹配除 ;. 或空格之外的 1 个或多个字符
  • .* - 零个或多个除换行符之外的任何字符

如果您想使用类似 POSIX 的表达式,请将字符类([...] 内)内的 \\s 替换为 [:空白:](或[:space:]):

gsub( "^[^[:blank:],]+,\\s+([^;.[:blank:]]+).*", "\\1", strings)

关于regex - 在第一次出现模式之后和另一个模式之前提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34935131/

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