r - gsub 并返回字符串中的正确数字

标签 r gsub

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

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/

相关文章:

regex - 在R中的字符串中的两个字母之间添加空格

r - 部署使用 fileInput 上传数据的 Shiny 应用程序时出错

R - 带有图例的 z 值的彩色散点图点

替换文本中大于5位的数字

删除R中数据中不必要的符号

ruby - 关于使用 gsub 有什么建议吗?在 irb 控制台中工作正常,但不会在实际文件中查找/替换

r - geom_density 匹配 geom_histogram binwitdh

r - 使用具有功能真/假值的 dplyr 的 if_else 函数

r - 在一组中查找不在另一组中的值对

r - 如何在R中用相同的字符串替换多个字符串