R 删除字符串开头的模式,但不删除末尾的模式

R 删除字符串开头的模式,但不删除末尾的模式,r,regex,string,data-cleaning,R,Regex,String,Data Cleaning,我有一份学校的名单,但其中有些学校是排名靠前的。我想删除学校的排名(在字符串的开头)。对学校进行排名时,如下所示: (3) Trinity Concordia (Minn.) 但是,有些学校的名称后面有括号,如下所示: (3) Trinity Concordia (Minn.) 因此,如果括号位于字符串末尾,我不想删除它 我不太确定怎么做,但我想我需要正则表达式 要获取我的数据: library(dplyr) library(rvest) library(purrr) page_num

我有一份学校的名单,但其中有些学校是排名靠前的。我想删除学校的排名(在字符串的开头)。对学校进行排名时,如下所示:

(3) Trinity
Concordia (Minn.)
但是,有些学校的名称后面有括号,如下所示:

(3) Trinity
Concordia (Minn.)
因此,如果括号位于字符串末尾,我不想删除它

我不太确定怎么做,但我想我需要正则表达式

要获取我的数据:

library(dplyr)
library(rvest)
library(purrr)

page_num <- seq(4, 16, by = 1) %>%
  paste("/", sep = "") %>%
  {page_num[-10]}

site <- paste("http://www.uscho.com/scoreboard/division-iii 
               men/20172018/list-", page_num, sep = "")

get_opponent <- function(x) {

  read_html(site[x]) %>%
    html_nodes("td:nth-child(2)") %>%
    html_text()

}

opponents <- map(seq(1, length(page_num)), get_opponent) %>%
  unlist() %>%
  tibble()

opponents
库(dplyr)
图书馆(rvest)
图书馆(purrr)
页数%
粘贴(“/”,sep=“”)%>%
{page_num[-10]}
站点%
html_text()
}
对手%
取消列表()%>%
tibble()
对手

我们可以在这里使用
sub
,使用以下模式^

^\s*\(\d+\)\s*(.*)
这将匹配一个前导秩,前后可能有空格,然后匹配并捕获字符串的其余部分。然后用余数替换字符串

x <- "(3) Trinity"
result <- sub("^\\s*\\(\\d+\\)\\s*(.*)", "\\1", x)
result

[1] "Trinity"

x另一个带有
sub
的选项是

x <- c("(3) Trinity", "Concordia (Minn.)")
sub("^\\(.*\\)", "", x)

#[1] " Trinity"          "Concordia (Minn.)"

x哇,感谢您的快速回复。我希望我能真正理解这里的正则表达式代码,但它还是很有帮助的。这个未替换的括号对我来说太奇怪了,但是如果你想尝试正则表达式,请访问+1.Visit
regex101.com