我已经删除了一个html文件,以使数据集的每个字符向量看起来像:
<h3 class=\"personName\">Whitney Alicia Zimmerman</h3> <li>Assistant Teaching Professor</li>"
我想使用正则表达式将其修剪为名称和位置(为了澄清,每个向量具有不同的名称和位置)。我以前用过的东西不适用于此(我使用grepl函数来分配我原来的html文件)。我将如何使用正则表达式或其他技术来修剪它?感谢您提前提供任何帮助。
或者如果它更容易使用,我还有两个其他的字符向量将两者分开:
" <h3 class=\"personName\">Whitney Alicia Zimmerman</h3>"
和
" <li>Assistant Teaching Professor</li>"
答案 0 :(得分:1)
您可以使用sub
并匹配除了您想要的所有内容。所以我可能会做类似
test = '<h3 class=\\"personName\\">Whitney Alicia Zimmerman</h3> '
sub("<.*", "", sub(".*\">", "", test))
[1] "Whitney Alicia Zimmerman"
可以修改gsub
表达式以消除您想要的任何内容。诀窍是匹配你不想要的东西,并用空字符串代替。
sub
的基本结构是sub(match_string, replace_string, target)
。查看文档将进一步清除它。我刚刚嵌套了我的sub
,所以我可以删除字符串的开头和结尾。
编辑:我包含了你/ Onyambu的建议,因为他是完全正确的。只有sub
不需要gsub
,就像我最初建议的那样。不同之处在于gsub
查找所有匹配项,sub
只查找第一个匹配项。
下面他还提供了一个解决方案,只使用一个sub
,而不是像我一样。
答案 1 :(得分:1)
如果确实想要使用正则表达式,那么这是一个使用stringr
(以及magrittr
)的解决方案:
使用你的长字符串:
htmlstring <- c("<h3 class=\"personName\">Whitney Alicia Zimmerman</h3> <li>Assistant Teaching Professor</li>")
代码:
library(stringr)
library(magrittr)
ParsedString <- str_replace_all(htmlstring, "<[^>]+>", "") %>% # remove everything between angle brackets, inclusive
str_squish # remove all extraneous whitespace
输出:
> ParsedString
[1] "Whitney Alicia Zimmerman Assistant Teaching Professor"