正则表达式仅匹配某些产品SKU

时间:2018-10-15 12:45:31

标签: regex

我构建了一个Web搜寻器,该爬行器从产品名称中提取产品的SKU,但是我一直在努力寻找合适的RegEx以仅匹配SKU。以下是产品列表。从整个文本墙上,我只需要提取粗体字。

第8行和第24行的产品名称中没有SKU,因此我希望它不会提取任何内容。

我尝试了以下RegEx,尽管关闭它并不完美:([AZ] + [0-9] +([A-Za-z] + [0-9] +)?([AZ] +) ?)+([0-9] +)?([AZ] + [0-9]?)

感谢您的帮助。 :)

  1. MemóriaDDR4 Crucial Ballistix战术示踪者RGB 8GB 2666MHz BLT8G4D26BFT4K
  2. SSD Crucial MX500 1TB CT1000MX500SSD1 Leitura 560MB / SGravação510MB / s SATA 3
  3. SSD Crucial BX300 120GB CT120BX300SSD1 Leitura 555MB / SGravação510MB / s SATA 3
  4. MemóriaDDR4 Crucial Ballistix Sport LT灰色 BLS4G4D240FSB 4GB 2400MHz
  5. MemóriaDDR4 Crucial Ballistix Sport LT红色 BLS16G4D240FSE 16GB 2400MHz
  6. MemóriaDDR4 Crucial Ballistix Sport LT灰色 BLS8G4D240FSB 8GB 2400MHz
  7. MemóriaDDR4 Crucial Ballistix Sport LT白色 BLS8G4D240FSC 8GB 2400MHz
  8. 套件升级PlacaMãeAsus PRIME A320M-K DDR4 + Processador AMD Ryzen 5 2400G 3.6GHz +内存DDR4 Cru
  9. SSD Crucial MX500 500GB CT500MX500SSD1 Leitura 560MB / SGravação510MB / s SATA 3
  10. SSD Crucial MX500 250GB CT250MX500SSD1 Leitura 560MB / SGravação510MB / s SATA 3
  11. MemóriaDDR4 Crucial Ballistix Sport Lt白色 BLS16G4D240FSC 16GB 2400MHz
  12. MemóriaDDR4 CRUCIAL BALLISTIX 16GB(2X8GB)2400MHZ UDIMM BLS2K8G4D240FSB
  13. MemóriaDDR4 Crucial Ballistix Sport LT红色 BLS2K8G4D240FSE 16GB(2x8GB)2400MHz
  14. MemóriaDDR4 Crucial Ballistix Sport LT红色 BLS8G4D26BFSEK 8GB 2666MHz
  15. MemóriaDDR4 Crucial Ballistix Sport LT白色 BLS8G4D240FSCK 8GB 2400MHz
  16. MemóriaDDR4 Crucial Ballistix Sport LT红色 BLS8G4D240FSEK 8GB 2400MHz
  17. MemóriaDDR4 Crucial CT8G4DFS824A SDP 8GB 2400MHz
  18. MemóriaDDR4 Crucial Ballistix战术 BLT8G4D26AFTA 8GB 2666MHz
  19. MemóriaDDR4 Crucial Ballistix Sport LT灰色 BLS8G4D240FSBK 8GB 2400MHz
  20. MemóriaDDR4 Crucial Ballistix Sport BLS8G4D240FSA 8GB 2400MHz
  21. MemóriaDDR4 Crucial Ballistix Sport LT红色 BLS8G4D240FSE 8GB 2400MHz
  22. MemóriaDDR4 Crucial Ballistix Sport LT白色 BLS4G4D240FSC 4GB 2400MHz
  23. MemóriaDDR4 Crucial Ballistix Sport LT红色 BLS4G4D240FSE 4GB 2400MHz
  24. 套件升级PlacaMãeAsus Prime X370-A DDR4 AM4 +处理器AMD RYZEN 7 1700 3.0GHZ +MEMÓRIADDR4 B
  25. MemóriaDDR4 Crucial Ballistix战术示踪者RGB 8GB 2666MHz BLT8G4D26BFT4K

2 个答案:

答案 0 :(得分:1)

根据您提供的示例,我假设所有SKU必须:

  • 由12个或更多大写字母和数字组成
  • 至少包含一个字母
  • 至少包含一个数字

基于这些假设,您可以使用以下正则表达式来标识所有SKU:

(?=\S*[A-Z])(?=\S*\d)[A-Z\d]{12,}

演示:https://regex101.com/r/lOjGT5/1

答案 1 :(得分:0)

这是适合您的示例的一个...

let deepArray = ['1',[['a'],['b']],[2],[[[['4',[3,'c']]]],[5]]];
let array = [];
 
function f(d){
    Array.isArray(d)? d.forEach(x=> f(x)) : array.push(d);   
}
    
deepArray.forEach(x=>f(x));
console.log(array);    
    

但是,它将匹配12个字符或更长的全大写单词。不知道代码规则的话,很难使其完美。

您没有描述捕获内容需要提取的内容,它们只是用于分组吗?