我有一个包含HTML的字符串,如:
s <- "...<span class=\"pull-right\">170 cm</span>...
<span class=\"pull-right\">29</span>...
<span class=\"pull-right\">06/24/1987</span>..."
其中...
表示其间有其他HTML标记。我想在>
和</span>
之间提取信息,这可能是
mm/dd/yyyy
我为正则表达式想出了类似的东西:
">[0-9/]*[a-z ]*[A-Z]*</span>"
这是对的吗?如何提取感兴趣的值?也就是说,给定s
:
170 cm
29
06/24/1987
答案 0 :(得分:1)
您最好选择HTML解析器。但是,如果您需要一个快速而肮脏的基于正则表达式的解决方案,请使用lookarounds在某个开头((?<=>)
之前的>
})和结束((?=</span>)
之间的尾随</span>
之间提取模式})模式:
(?<=>)[0-9/A-Za-z ]*(?=</span>)
请注意0-9/
,a-z
,A-Z
合并为一个类,否则1 Gb
之类的字符串将不匹配(原始正则表达式要求大写字母遵循小写那些)。
perl=TRUE
提供了这些外观:
m <- gregexpr("(?<=>)[0-9A-Za-z /]*(?=</span>)", s, perl=TRUE)
regmatches(s, m)
答案 1 :(得分:0)
这是匹配
的正则表达式170 cm
29
1987年6月24日
(\d{2}\/\d{2}\/\d{4})|(\d+ [A-Za-z]+)|(\d+)