gsub并在字符串

时间:2015-09-29 06:42:21

标签: r gsub

我在数据框中有一个文本字符串,如下所示

2 Sector. District 1, Area 1

我的目标是在Sector之前提取数字,否则返回空白。

我认为以下正则表达式会起作用:

gsub("^(?:([0-9]+).*Sector.*|.*)$","\\1",TEXTSTRINGCOLUMN)

如果单词Sector不存在,则会正确返回任何内容,但会返回1而不是2。非常感谢我出错的地方。谢谢!

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"