从文本文件中提取特定单词?

Cur*_*us 1 regex r

我有一个超过10,000行的文本文件,每行有一个单词,以CDID_开头,后跟10个字符,没有空格,如下所示:

a <- c("Test CDID_1254WE_1023 Sky","CDID_1254XE01478 Blue","This File named as CDID_ZXASWE_1111")
Run Code Online (Sandbox Code Playgroud)

我想提取以CDID_开头的单词,使上面的行看起来像这样:

CDID_1254WE_1023
CDID_1254XE01478
CDID_ZXASWE_1111
Run Code Online (Sandbox Code Playgroud)

Ric*_*ven 7

这里有三个基本R选项.

选项1:使用sub(),删除除以下CDID_*部分之外的所有内容:

sub(".*(CDID_\\S+).*", "\\1", a)
# [1] "CDID_1254WE_1023" "CDID_1254XE01478" "CDID_ZXASWE_1111"
Run Code Online (Sandbox Code Playgroud)

选项2:使用regexpr(),提取CDID_*部分:

regmatches(a, regexpr("CDID_\\S+", a))
# [1] "CDID_1254WE_1023" "CDID_1254XE01478" "CDID_ZXASWE_1111"
Run Code Online (Sandbox Code Playgroud)

选项3:对于数据帧结果,我们可以使用新strcapture()功能(v3.4.0)并在一次调用中完成所有工作:

strcapture(".*(CDID_\\S+).*", a, data.frame(out = character()))
#                out
# 1 CDID_1254WE_1023
# 2 CDID_1254XE01478
# 3 CDID_ZXASWE_1111
Run Code Online (Sandbox Code Playgroud)

  • 还有`stringr :: str_extract(string = a,pattern ="CDID _ \\ S +")` (2认同)