[英]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.