【发布时间】:2017-07-25 17:09:48
【问题描述】:
假设我有一个产品列表,例如:
- 品牌 HGT15K51B 商品,带有文字描述
- 命名为 CDGL-56 的产品并带有描述
- 带有 TR64GQE350 并添加了 Gizmo 的精美物品
- 另一个品牌106110 110cm绿色带风扇
我正在尝试仅提取产品代码。
这将是一大块连续的文本。它可能包含带有 _ - 的 A-Z 1-9。它总是大写的。它总是以空格结尾。它的长度未知。它可能只是数字。它总是字符串中最大的连续块。
我的正则表达式技能很弱,可以用正则表达式提取吗?有没有更好的办法?
谢谢
【问题讨论】:
-
如果他们总是遵循像这样的相同模式,即产品名称后跟 id 后跟描述,那么这是可能的。但是有太多可能导致误报的边缘情况,您可能不会得到任何覆盖 100% 的结果。
-
唯一的区别是
(?<!\S)[A-Z0-9-]+(?!\S) -
正则表达式不适合这个问题吗?
-
你可以试试这个(?<!\S)[A-Z0-9-]+(?!\S)
-
将
+替换为{5,}意味着5 个或更多。您还可以找到字符串中的所有匹配项,然后只需 strlen 即可找到最长的匹配项。
标签: php regex string text-extraction