2017-10-10 78 views
0

我试图从产品标题列表中检索产品模型。正则表达式从产品列表中查找模型

由于很难从标题中检索模型,我决定从获取大写字母和数字的子字符串开始(它也可以包含特殊字符,但它们不是必需的)。

一些例子是:

  • 苹果iPhone 8加64GB特拉的Retina 5.5" 1200万像素/ 7MP iOS的11 - 普拉塔
  • 智能电视QLED德55" 三星QN55Q7FAMP COM HDMI/USB /无线网络连接-Fi Bivolt
  • 智能电视QLED德65" 三星QN55Q7FAMP COM HDMI/USB /无线网络连接Bivolt
  • MEMORIA DDR4关键16GB/2400关键BLS16G4D240FSE BALLISTIX小号
  • MEMORIA DDR4关键16GB/2400关键BLS16G4D240FSB BALLISTIX小号
  • MEMORIA DDR4关键16GB/2400关键BLS16G4D240FSC BALLISTIX小号
  • MEMORIA DDR4关键16GB/2400关键CT16G4DFD824A(SIN吸
  • Projetor LG MiniBeam PW1500G 1500流明WXGA(1280×800)的HDMI/USB

我知道他们中的很多人会被错误捕获。为了避免一些错误,我在构建字符串字典忽略(如DDR4,xxGB等...)

我开始尝试与this。我正在用大写字母和/或数字来获取单词。如何用BOTH(大写字母和数字)和特殊字符(如果它们在那里就可以,但它们不是必需的)获得单词。


这是我第一个解决问题的方法。当然,另一个使用或不使用正则表达式的解决方案将非常受欢迎。

+0

如果你允许每个角色的干草堆里的一切都会匹配。在这段文字中我没有解释的模式。 (你可以为你的角色类添加更多的角色,尽管你获得的角色越宽,你会遇到的角色越多,你添加的角色越多)。 – chris85

回答

1

也许尝试匹配包含至少一个大写字母和一个数字的块? 因此,这样的事情确保中间至少有一个大写和一个数字。您需要使用'或'来使其以另一种方式工作。

.+ ([A-Z1-9]*[A-Z]+[0-9]+[A-Z1-9]*) .+ 
+1

根据你的回答,我正在尝试这个(https://regex101.com/r/1Ra5U5/3) – Nizam