Regex 如何提取字母字符串 ;和 ;使用正则表达式时长度大于4个字符的数字?

Regex 如何提取字母字符串 ;和 ;使用正则表达式时长度大于4个字符的数字?,regex,Regex,我想从产品名称中提取型号。 模型应视为长度大于4个字符的字母和数字字符串 例如,在以下产品名称中,“26PFL3405H”是型号 飞利浦26PFL3405H电视 我所说的型号是指单词必须至少包含一个数字和一个字母(小写或大写)您可以使用如下表达式: \b(?=[A-Z]+\d|\d+[A-Z])[A-Z\d]{4,}\b 要使其不区分大小写,请使用/i标志或(?i)尝试以下正则表达式:(已修复) /\s([A-Z0-9]+)\s/ 要满足必须同时包含这两个元素的条件,正则表达式应该如下所示:

我想从产品名称中提取型号。 模型应视为长度大于4个字符的字母和数字字符串

例如,在以下产品名称中,“26PFL3405H”是型号

飞利浦26PFL3405H电视


我所说的型号是指单词必须至少包含一个数字和一个字母(小写或大写)

您可以使用如下表达式:

\b(?=[A-Z]+\d|\d+[A-Z])[A-Z\d]{4,}\b

要使其不区分大小写,请使用
/i
标志或
(?i)
尝试以下正则表达式:(已修复)


/\s([A-Z0-9]+)\s/

要满足必须同时包含这两个元素的条件,正则表达式应该如下所示:

[A-Z0-9]*(?:[A-Z][0-9]|[0-9][A-Z])[A-Z0-9]*
我不完全知道实施最小长度的最佳方法是什么,但这会起作用

(?:[A-Z][0-9]|[0-9][A-Z])[A-Z0-9]{3,}|[A-Z0-9](?:[A-Z][0-9]|[0-9][A-Z])[A-Z0-9]{2,}|[A-Z0-9]{2,}(?:[A-Z][0-9]|[0-9][A-Z])[A-Z0-9]|[A-Z0-9]{3,}(?:[A-Z][0-9]|[0-9][A-Z])

请注意,我没有发布过一个正则表达式这么长的时间,它看起来很简单,但我没有先考虑它;您可能只想按长度筛选第一个正则表达式的结果。

我将采用两步方法:首先筛选大小为4+的正则表达式,然后分别查找字母和数字:

echo "12345 Philips 26PFL3405H Television" | egrep -o "\b[a-zA-Z0-9]{4,}\b" | egrep "[0-9]" | egrep "[a-zA-Z]" 
26PFL3405H

到目前为止你试过什么?什么口味的regex?努力在哪里?根据你对型号的定义,“飞利浦”和“电视”也是型号,但我怀疑这是你想要的。请澄清。我应该在问题中说明这一点。模态必须同时包含数字和字母,但不存在包含多少字母和数字的条件。但总的来说,模态名称应该至少有4个字符长。谢谢,工作正常,但我如何修改它,使模型至少有4个字符长?@Ankit,编辑时忘记了这个条件。因此,你最好向前看。谢谢,我将在php中使用它,您的正则表达式没有强制要求型号至少包含一个字母和一个字母。模型必须同时包含字母和数字。@Ankit我已经更正了。它现在是在PHP中(+强制执行至少一个1个字母和1个单词的字符匹配)
echo "12345 Philips 26PFL3405H Television" | egrep -o "\b[a-zA-Z0-9]{4,}\b" | egrep "[0-9]" | egrep "[a-zA-Z]" 
26PFL3405H