在R中使用哪个正则表达式?

时间:2015-03-05 22:55:03

标签: regex r

是否有人知道使用哪个正则表达式从R中的此字符stddata__2015_02_04中提取此字符"<li><a href=\"stddata__2015_02_04/\"> stddata__2015_02_04/</a></li>"?您可以假设乞讨stddata__201已知,并且只有结尾会不时发生变化。

3 个答案:

答案 0 :(得分:3)

如果输入为:

x <- "<li><a href=\"stddata__2015_02_04/\"> stddata__2015_02_04/</a></li>"

然后使用sub

sub(".*(stddata__201[_0-9]+).*", "\\1", x)

,并提供:

[1] "stddata__2015_02_04"

以下是正则表达式的可视化:

.*(stddata__201[_0-9]+).*

Regular expression visualization

Debuggex Demo

答案 1 :(得分:2)

我倾向于同意其他海报,正则表达不是最好的方法。但是,如果你真的想用Regex做这个,那么就这样了。

(?<=>\s)([^<>\/])+        # Works in php and python, and most other languages

答案 2 :(得分:1)

> library("stringr")
> str_extract("<li><a href=\"stddata__2015_02_04/\"> stddata__2015_02_04/</a></li>",
+             "stddata__201[0-9]_[0-9]{2}_[0-9]{2}")
[1] "stddata__2015_02_04"

首选解决方案不是正则表达式...

> library("rvest")
> "<li><a href=\"stddata__2015_02_04/\"> stddata__2015_02_04/</a></li>" %>% 
+   html() %>% 
+   html_text()
[1] " stddata__2015_02_04/"