删除字符串开头但不结尾的模式
Remove Pattern at Beginning of String but not at End
我有一个学校列表,但其中一些学校是有排名的。我想删除学校的排名(在字符串的开头)。学校排名的时候是这样的:
(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
这里我们可以使用sub
,格式如下^
^\s*\(\d+\)\s*(.*)
这匹配前导排名,前后可能有空格,然后匹配并捕获字符串的其余部分。然后用余数替换字符串。
x <- "(3) Trinity"
result <- sub("^\s*\(\d+\)\s*(.*)", "\1", x)
result
[1] "Trinity"
sub
的另一个选项是
x <- c("(3) Trinity", "Concordia (Minn.)")
sub("^\(.*\)", "", x)
#[1] " 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
这里我们可以使用sub
,格式如下^
^\s*\(\d+\)\s*(.*)
这匹配前导排名,前后可能有空格,然后匹配并捕获字符串的其余部分。然后用余数替换字符串。
x <- "(3) Trinity"
result <- sub("^\s*\(\d+\)\s*(.*)", "\1", x)
result
[1] "Trinity"
sub
的另一个选项是
x <- c("(3) Trinity", "Concordia (Minn.)")
sub("^\(.*\)", "", x)
#[1] " Trinity" "Concordia (Minn.)"
替换字符串开头圆括号内的所有内容。