关于 r:gsub 并在字符串中返回正确的数字

gsub and returning the correct number in a string

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

2 Sector. District 1, Area 1

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

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

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

当单词 Sector 不存在时,这正确地不返回任何内容,但返回 1 而不是 2。非常感谢有关我哪里出错的帮助。谢谢!


我们可以对"扇区"使用正则表达式前瞻,将数字捕获为一个组,并在替换中指定捕获组 (\\\\1)。

1
2
sub('.*?(\\\\d+)\\\\s*(?=Sector).*', '\\\\1', v1, perl=TRUE)
#[1]"2"

编辑:根据@Avinash Raj 的评论修改。

不使用环视,(感谢@Avinash Raj)

1
sub('.*?(\\\\d+)\\\\s*Sector.*', '\\\\1', v1)

数据

1
v1 <-"2 Sector. District 1, Area 1"


试试吧,

1
2
3
x <-"2 Sector. District 1, Area 1"
substring(x, 0, as.integer(grepl("Sector", x)))
#[1]"2"