正则表达式删除 <> 之间的所有内容

Regular expressions remove everything between <>

我正在学习网络抓取。我掌握了一堆数据,但结构很乱。
我有一个这种形式的字符串向量:
"9,55< U+00A0>x< U+00A0>1016", (现在我写的时候觉得这是一个特殊的语法,因为如果不在"U"之前放一个space就不能粘贴到这里) 我从网站上抓取的内容写为“9,55*10^16”。

我的长篇目标 运行 是将这个字符串变成一个数字变量,即 95500000000000000。 但首先我想删除第一个“<”和最后一个“>”之间的所有内容。 下面是我的尝试。

gsub("<(.*?)>", "", vectorOfStrings)

Edit:最好使用 "9,55\U{00A0}x\U{00A0}1016" 在 R 中生成字符串,因为“<”和“>”不是字符串中的实际文字。

您看到的字符是 unicode(我认为是 UTF-8),R 的表示(当它不是很清楚时)是 less-than/greater-than 符号。要删除它,一种方法是将 "convert" 文本转换为 ASCII:

iconv(vectorOfStrings, "utf-8", "ASCII", sub = "")

任何不可翻译的内容都应该被删除。

我会简单地将你的贪心 "Match all" 更改为“匹配除 '>' 之外的所有内容,或者使用 .? 使其变得懒惰(匹配最小值)

<[^>]*> or <.*?>

或将标签与标签匹配

<.*?>.*?<.*?>

这个有效

>vectorOfStrings = "9,55< U+00A0>x< U+00A0>1016"
>vectorOfStrings1 = gsub("<[^>]+>","",vectorOfStrings)
>vectorOfStrings1 
[1] "9,55x1016"

这是我从网络上抓取科学计数法数字到数字的代码:

library(magrittr)

vectorOfStrings <- "9,55< U+00A0>x< U+00A0>1016"  

scrape_numeric <- function(x) {
 x %>% 
   gsub(">10", ">e+", .) %>%
   gsub("<.*>", "", .) %>%
   gsub(",", ".", .) %>%
   as.numeric
}

scrape_numeric(vectorOfStrings)

# [1] 9.55e+16