gpt4 book ai didi

正则表达式在存在多个时提取第一个 date_time 戳

转载 作者:行者123 更新时间:2023-12-01 13:32:50 36 4
gpt4 key购买 nike

给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本

  • 候选字符串可以有一个或多个时间戳
  • 后续的 date_time 戳记将被 sep="-"
  • 隔开
  • 后续date_time 戳之间可能有也可能没有文本,但肯定会有sep

  • 日期时间格式:
  • 每个单独的邮票可能包含也可能不包含时间(即仅日期)
  • 如果邮票有时间,格式将是 _HHMM_HHMMSS
  • 日期将始终采用 YYYYMMDD
  • 格式

    library(stringr)  

    string <- "TEXT_etc_20140530-20140825_1635-"
    expected <- "TEXT_etc_20140530"

    ## using this pattern for the date_time stamp
    ## 8 digits, optional underscore with 4to6 digits, appearing exactly once, followed by "-"
    . (\\d{8}(_\\d{4,6})?){1}- # I am not concerned with potential of a 5-digit time stamp

    ## Attempts
    pat1 <- "(TEXT)(.*?)(\\d{8}(_\\d{4,6})?){1}-"; str_extract(string, pat=pat1)
    pat2 <- "(\\d{8}(_\\d{4,6})?){1}-"; str_extract(string, pat=pat2) ## date is correct
    pat3 <- "(.*?)(\\d{8}(_\\d{4,6})?){1}-"; str_extract(string, pat=pat3)
    pat4 <- "(.*?)(\\d{8}){1}-" ; str_extract(string, pat=pat4)

    ## Other potential string patterns
    string <- "TEXT_etc_20140530-diff_txet_20140825_1635-"
    string <- "TEXT_etc_20140530_123456-diff_txet_20140825_1635-"

    你能帮我找出正则表达式中的错误吗?

    R 用户注意: R 要求转义字符 \ 本身被转义,因此上面代码中的 \\

    最佳答案

    用这 8 位数字替换 8 位数字后跟任何内容:

    # test data
    string <- c("TEXT_etc_20140530-20140825_1635-",
    "TEXT_etc_20140530-diff_txet_20140825_1635-",
    "TEXT_etc_20140530_123456-diff_txet_20140825_1635-")

    sub("(\\d{8}).*", "\\1", string)
    ## [1] "TEXT_etc_20140530" "TEXT_etc_20140530" "TEXT_etc_20140530"

    如果应保留可选时间,请改用它:
    sub("(\\d{8}(.\\d{4,6})?)\\b.*", "\\1", string)
    ## [1] "TEXT_etc_20140530" "TEXT_etc_20140530"
    ## [3] "TEXT_etc_20140530_123456"

    更新 添加了第二个解决方案并对其进行了更正。

    关于正则表达式在存在多个时提取第一个 date_time 戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25535558/

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