gpt4 book ai didi

用于提取单词和字符之间所有单词的正则表达式

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

我知道用 R 执行正则表达式的基础知识。但是我这里有一个文件,如:

**[2016-04-28 14:00:06,603],,,,,SERVICE_ID=441,DEBUG,DBSEntryServlet,DBSEntryServlet: delegateToRequestManager:: SERVICE_ID=541,SERVICE_ID=9981

[2016-04-28 14:00:06,608],,,,,,DEBUG,DBSEntryServlet,10.91.39.143:60801 SERVICE_ID=00234,SERVICE_ID=11134,IMD=6767**

我想提取时间戳以及该行中的所有 SERVICE_ID。

所以,我的预期输出是:

[2016-04-28 14:00:06,603] SERVICE_ID=441 SERVICE_ID=541 SERVICE_ID=9981

[2016-04-28 14:00:06,608] SERVICE_ID=00234 SERVICE_ID=11134

我试过的代码只提取了一个 SERVICE_ID。

library(qdapRegex)

a <- readLines("C:\\MY_FOLDER\\vinita\\sample.txt")

testi <- rm_between(a,"SERVICE_ID",",",extract = T)

最佳答案

我们将 2 个或多个 , 替换为 "" 以获得 'str2',然后使用正则表达式查找,我们匹配一个或多个空格 (\\s+) 跟在 ]) 后面跟字符 (.*) 直到字符串结尾,将其替换为 "" 这样我们就可以提取 [2016-04..,03] 部分。从 'str2' 中,我们提取子字符串 "SERVICE_ID="后跟数字 (\\d+) 到一个 list 中,将它们粘贴 在一起最后用“str3”粘贴它。

library(stringr)
str2 <- gsub(",{2,}", " ", str1)
str3 <- sub("(?<=\\])\\s+.*", "", str2, perl = TRUE)
paste(str3, sapply(str_extract_all(str2, "SERVICE_ID=\\d+"), paste, collapse=" "))
#[1] "[2016-04-28 14:00:06,603] SERVICE_ID=441 SERVICE_ID=541 SERVICE_ID=9981"
#[2] "[2016-04-28 14:00:06,608] SERVICE_ID=00234 SERVICE_ID=11134"

数据

 str1 <- c("[2016-04-28 14:00:06,603],,,,,SERVICE_ID=441,DEBUG,DBSEntryServlet,DBSEntryServlet: delegateToRequestManager:: SERVICE_ID=541,SERVICE_ID=9981",
"[2016-04-28 14:00:06,608],,,,,,DEBUG,DBSEntryServlet,10.91.39.143:60801 SERVICE_ID=00234,SERVICE_ID=11134,IMD=6767")

关于用于提取单词和字符之间所有单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38811009/

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