不同属性的正则表达式

时间:2012-02-04 23:50:14

标签: regex

我无法提取分段。例如,我们可以编写什么样的正则表达式来提取状态评分停车怎么样?我希望能够编写正则表达式,这将使我对该餐厅的评级为5.0(没有在其后写的星级)。我不知道如何在特定单词之前或之后获取值而不将其包含在答案中。

3 个答案:

答案 0 :(得分:1)

你没有直截了当地说,但听起来你是screen scraping。如果是这种情况,您可能需要考虑使用现有包来获取数据,然后然后使用regexp来获取详细信息。如果您使用的是Python,我建议Beautiful Soup因为它处理现代(而不是那么现代)网页中的所有垃圾。

答案 1 :(得分:0)

(\d.\d) star rating\n.*?\n.*?\n.*?\n[^,]*, ([A-Z]{2}).*Parking: (Yes|No)

然后使用捕获组1,2和3.

答案 2 :(得分:0)

首先,我不知道你的原始正则表达式是如何工作的。括号之间的表达式通常表示捕获组,因此它将匹配文本中的那些。当然,除非你逃脱它们:

(\(\d{3}\)\s\d{3}-\d{4})

其次,如果您不了解捕获组的工作方式,则必须查找工具/语言文档以了解如何使用它们。尝试使用Joey的答案,你应该没问题。

例如,在JavaScript中,您可以像访问数组索引一样访问它们:

var exec = /yourregex/.exec("yourstring");
var group1 = exec[1];
var group2 = exec[2];
etc

Here是关于捕获群组的一些信息。我在评论中假设您使用的是Ruby,因此this tutorial也可能会有所帮助。我对Ruby没有经验,所以我无法提供更多信息,但我发布的链接应该可以帮助您入门。

更新:经过一些谷歌搜索后,我终于找到了语法:

all,g1 = *(/Neighborhood\:\ (\w+)/.match("Neighborhood: Koreatown"))
# all = "Neighborhood: Koreatown"
# g1 = "Koreatown"

如果同一个正则表达式中有更多组,请使用更多变量。