选择字符串中的所有内容,但匹配正则表达式的最后一个单

时间:2017-06-01 02:16:50

标签: ruby regex

我想从网站上抓取一个品牌。有时这个名字有一个我不想捕捉的额外词。例如,我想抓取Kitchen Aid,但该网站有Kitchen Aid Appliances。另一个示例是Maytag Appliance - 请注意,第一个示例为Appliances 's',第二个Appliance's'

我有一个我认为可行的正则表达式,但事实并非如此。我不确定原因。

^(\w.+)(\sAppliances?)?$

?应匹配's'上的Appliance(s)中的零个或一个。第一组应该是Appliance(s)之前的所有单词。因此,它应该抓取Kitchen AidMaytag

某些品牌可能未包含ApplianceAppliances。我可以列出GEThermador,然后抓住它。

如果不符合我的用例,我将非常感谢您对此提供的任何帮助以及对此代码所做的事情的澄清。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

/^([\w ]+) (?:Appliance)s?/m

Demo 1

更新(您希望设备是可选的):

/^([\w ]+?)(?: Appliance| Appliances)?$/m

但这并不是非常具有歧视性。

Demo 2

您可能会考虑使用具有动态正则表达式的哈希值,该正则表达式具有您正在寻找的设备品牌的替代品:

/^(Kitchen Aid|Maytag|GE|Thermadore)(?: Appliance| Appliances)?$/m

Demo 3