我的数据框中有一个文本字符串,如下所示
2 扇区。 1区1区
我的目标是提取Sector
之前的数字,否则返回空白。
我认为以下正则表达式可以工作:
gsub("^(?:([0-9]+).*Sector.*|.*)$","\\1",TEXTSTRINGCOLUMN)
当单词 Sector
不存在时,此方法正确返回任何内容,但返回 1
而不是 2
。非常感谢对我出错的地方的帮助。谢谢!
最佳答案
我们可以对“Sector”使用正则表达式前瞻,将数字捕获为一组,并在替换中指定捕获组 (\\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"
关于r - gsub 并返回字符串中的正确数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32837308/