我试图使用一些正则表达式来查找一系列文档中的行,以便我可以准确地对信息进行子集化。首先,一些样本数据。
text <- c("BAR 02/ BLAHBLAH ",
" 27/ LOCATION: BLAH-TOWN",
" 2013 BLAH;BLAH",
" BAR 09/ 10/ BOOHAABLAH ",
" 25/ 14/ LOREM IPSUM, ",
" 2014 2014 LOREM LORE LOT",
" BAR BLAH MUH BLAH NO BLAH")
我试图找到列表的元素,其中BAR仅由数字跟随。空白的数量是可变的,但我有兴趣捕获的行总是后跟数字。我正在使用基本R grep()函数并尝试了大量的函数。到目前为止,我发现没有积极的前瞻配置似乎赶上了吗?
到目前为止我尝试过的一些事情。
grep("(BAR\\b(?=\\s*[0-9]))", text, perl= T)
grep("(BAR\\b(?=\\s*\\b[0-9]))", text, perl= T)
grep("(BAR\\b\\s*\\d\\d\/)", text, perl = T)
grep("BAR\\s*[0-9]",text,perl=T)
grep("BAR\\s*(?![^A-Za-z])",text,perl=T)
我哪里错了?我听说过有关tidyr的一些内容,但我所读过的内容都没有显示出比grep更多的承诺。
答案 0 :(得分:1)
我将根据your feedback提供答案。您可以通过将BAR
更改为VIOL
并将将Unicode空格更改为字符串来修改字符向量。
因此,以下情况适用于您的情况:
grep("(*UCP)VIOL\\s+[0-9]", text, perl=TRUE)
(*UCP)
PCRE动词将\s
匹配任何Unicode空格。
在其他环境中(这不是你的情况),TRE(默认的基础R正则表达式引擎)POSIX字符类是Unicode识别的,也可以使用
grep("VIOL[[:space:]]+[0-9]", text)