[英]Extracting string value from unstructured text
我正在使用的数据结构旨在将单个字段用于多种用途。 我有超过1万条记录要处理,我需要提取一系列有意义的特定字符到我的dataFrame的另一个字段中。 我需要从中提取出可预测的模式; 下面是一个示例:
x = "This field has lots of text and also what I need to extract from it which is 555_AB345678"
我需要提取的是555_AB345678值。 前3个值(555)和下划线都是可以预测的; AB345678不是。 但是,至少字符串的最后4个值始终是数字。 我不能保证我想要的值在字符串的末尾,但是在大多数情况下它们是对的,因此我很满意从那里开始。
我已经探索过将gregexpr()与substring()结合使用,但是还没有开始工作。 我以为strsplit()可以工作,但是我没有可分割的分隔符(只是我需要的值中的可预测模式)。 我也发现了类似的问题,但似乎没有一个符合我的标准。
我想看看这里是否有人对如何做到这一点有建议。
这种卷积提取器的基本R方式是:
regmatches(x, regexpr("555_.*$", x))
# "555_AB345678"
$
在字符串的末尾; 和.*
,任何字符序列(包括一个空字符)。
或者,我们可以将整个字符串替换为所需的部分:
sub("^.*(555_.*)$", "\\1", x)
# "555_AB345678"
^
是字符串的开头,因此我们现在要匹配整个字符串,从^
到$
。 \\\\1
替换是指括号中的部分。 有关详细信息,请参见?regex
。 对于语法更好的提取程序,可以尝试使用stringr包:
library(stringr)
str_extract(x, "555_.*$")
# "555_AB345678"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.