我有一组产品描述,我想通过正则表达式从中提取产品属性。</ p>
https://regex101.com/r/HTTfNR/1
BL460c G6 X5550 6G 1P Svr
BL460c G6 E5540 6G 1P Svr
BL460c G6 E5540 6G 1P Svr
BL460c G6 E5530 6G 1P Svr
BL460c G6 L5520 6G 1P Svr
BL460c G6 E5520 6G 1P Svr
BL460c G6 E5506 6G 1P Svr
BL460c G6 E5502 6G 1P Svr
BL280c G6 L5520 2G LP 1P Svr
BL280c G6 E5520 2G 1P Svr
BL280c G6 E5540 2G 1P Svr
BL280c G6 E5502 2G 1P Svr
S-Buy BL460c G6 E5540 8G 2P Svr
S-Buy BL460c G6 E5530 4G 1P Svr
S-Buy BL460c G6 E5530 4G 1P Svr
BL2x220c G6 E5540 24G 2P 250GB Svr
BL2x220c G6 E5530 24G 2P 250GB Svr
BL2x220c G6 L5530 24G 2P 250GB Svr
BL2x220c G6 L5520 24G 2P
BL2x220c G6 E5640 2x2P 24G Svr
BL2x220c G6 E5630 2x2P 24G Svr
BL2x220c G6 L5640 2x2P 24G Svr
BL2x220c G6 Mod0 Svr
BL280c G6 X5650 6G 1P Svr
BL280c G6 E5630 4G 1P Svr
BL280c G6 L5640 4G 1P Svr
BL280c G6 E5506 2G 1P Svr
BL620c G7 E7-2860 32G Svr
BL620c G7 E7-2850 32G Svr
BL620c G7 E7-2830 32G Svr
BL680c G7 E7-4860 64G Svr
BL680c G7 E7-4860 64G Svr
BL680c G7 E7-4850 64G Svr
BL680c G7 E7-4830 64G Svr
BL680c G7 E7 4830 64G Svr
我想使用正则表达式解决这个问题。
我已经尝试过了,但是我无法在我的第一步的所有用例中都使用它。
\b(?!\d)([ELX0-9-])\w{1,}
我要提取x5550
/ E5540
/ E7-2860
/ E7-2860
/ E7 4830
作为第一步。有人可以通过代码帮助我从上面的文本中提取文本吗?
答案 0 :(得分:1)
如果匹配应以E
X
或L
开头,则可以省略否定的前行(?!\d)
,而仅使用字符类中的字符而不使用连字符和数字。
然后匹配一个可选数字,后跟一个空格或连字符。
\b[EXL](?:\d[ -])?\d+(?!\S)
部分
\b[EXL]
字边界,然后匹配E
X
或L
(?:\d[ -])?
(可选)匹配一个数字,后跟一个空格或连字符\d+
匹配1个以上的数字(?!\S)
负向查找,断言右边直接不是非空格字符答案 1 :(得分:0)
要使用正则表达式提取信息,您需要清楚数据模式。从您的样本集中,我猜想模式是“带有G和数字的文本”,正则表达式看起来像这样:
(?<=G\d\s)\S+
https://regex101.com/r/KaK4fR/1
这是否将完全证明错误仍有待观察。