我在数据框中有一个文本字符串,如下所示
2 Sector. District 1, Area 1
我的目标是在Sector
之前提取数字,否则返回空白。
我认为以下正则表达式会起作用:
gsub("^(?:([0-9]+).*Sector.*|.*)$","\\1",TEXTSTRINGCOLUMN)
如果单词Sector
不存在,则会正确返回任何内容,但会返回1
而不是2
。非常感谢我出错的地方。谢谢!
答案 0 :(得分:4)
我们可以使用“扇区”的正则表达式预测,将数字作为一组捕获,并在替换中指定捕获组(\\1
)。
sub('.*?(\\d+)\\s*(?=Sector).*', '\\1', v1, perl=TRUE)
#[1] "2"
编辑:根据@Avinash Raj的评论修改。
不使用外观,(归功于@Avinash Raj)
sub('.*?(\\d+)\\s*Sector.*', '\\1', v1)
v1 <- "2 Sector. District 1, Area 1"
答案 1 :(得分:0)
尝试,
x <- "2 Sector. District 1, Area 1"
substring(x, 0, as.integer(grepl("Sector", x)))
#[1] "2"