这是我第一次遇到堆栈溢出问题,因此,如果我的帖子在质量上可能有所欠缺,请放心。
我想学习一些使用R进行网络抓取的方法,并从一个简单的示例开始->从Wikipedia站点中提取表格。
我设法下载了特定页面并确定了我感兴趣的HTML部分:
<td style="text-align:right">511.000.000\n</td>
现在,我想使用正则表达式从表中提取数据中的数字。所以我创建了一个正则表达式,从我的角度来看,它应该匹配数字的结构:
pattern<-"\\d*\\.\\d*\\.\\d*\\.\\d*\\."
我还尝试了其他变体,但没有一个在HTML代码中找到该数字。我想保持开放的模式,因为数字可能有成千上万。
非常感谢您的支持!
答案 0 :(得分:0)
仔细查看您的正则表达式。您假设数字中有4个句点(\\.
),但是在您自己的示例中,只有两个句点。它不会匹配,因为当星号将\\d
标记为可选(零个或多个)时,句点未标记为可选。如果您在第3和第4个周期之后添加?
修饰符,则可能会发现您的模式开始匹配。
答案 1 :(得分:0)
这么多星星意味着很多回溯。
再有一点,使用\\d*
可以匹配任何组中超过3位的数字,也可以匹配没有数字的组。
假设您的数字始终是整数,使用.
作为千位分隔符,则可以使用以下命令:\\d{1,3}(?:\\.\\d{3})*
(请注意,非捕获组构造(?:...)
的用法-隐含如Regular Expressions as used in R中所述,在参数中使用perl = TRUE
。