gpt4 book ai didi

r - 如何使用str_extract()从包stringr中提取括号内但不包括括号的数字?

转载 作者:行者123 更新时间:2023-12-04 08:01:34 25 4
gpt4 key购买 nike

有很多正则表达式问题,但我无法以优雅的方式解决以下问题。
我有以下向量,想提取 只有方括号内的数字 ,即不包括括号本身。数字可能是负数。问题也可能是:
如何仅提取 first capturing group与功能 str_extract来自 {stringr}包裹?

string <- c("[1] cate 1", "[-1] cate -1", "[2] cate 2")
stringr::str_extract(string = string, pattern = "\\[[^:digit:]+\\]")

[1] "[1]" "[-1]" "[2]"

stringr::str_extract(string = string, pattern = "\\[[^(:digit:)]+\\]")

[1] "[1]" "[-1]" "[2]"
我也尝试附加 \\1到模式以提取第一组并得到以下错误:
stringr::str_extract(string = string, pattern =  "\\[[^(?:digit:)]+\\]\\1")

Error in stri_extract_first_regex(string, pattern, opts_regex = opts(pattern)) :
Back-reference to a non-existent capture group. (U_REGEX_INVALID_BACK_REF)
感谢您的时间,如果这个问题是重复的,我深表歉意。

最佳答案

您可以使用

stringr::str_extract(string, "(?<=\\[)-?\\d+(?=\\])")
R demo
如果需要匹配整数或浮点数,可以使用
stringr::str_extract(string, "(?<=\\[)-?\\d*\\.?\\d+(?=\\])")
细节:
  • (?<=\[) - 与紧跟在 [ 之前的位置匹配的正向后视
  • -? - 可选 -字符
  • \d+ - 一位或多位数字
  • \d*\.?\d+ - 匹配零个或多个数字,可选 .然后是一位或多位数字
  • (?=\]) - 与紧跟在 ] 后面的位置匹配的正向前瞻.
  • 关于r - 如何使用str_extract()从包stringr中提取括号内但不包括括号的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66441940/

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