从一行文本中提取连续的字母数字字符块
Extract block of consecutive alphanumeric characters from a line of text
假设我有一个产品列表,例如:
- 带有文字描述的品牌 HGT15K51B 商品
- 命名为 CDGL-56 的产品及描述
- 带有 TR64GQE350 并添加了 gizmo 的精美商品
- 另一品牌 106110 110cm 尺寸绿色带扇子
我只想提取产品代码。
这将是一大块连续的文本。它可能包含 A-Z 1-9 和 _ -。它总是大写的。它总是以 space 结尾。它的长度未知。它可能只是数字。它始终是字符串中最大的连续块。
我的正则表达式能力较弱,可以用正则表达式提取吗?有没有更好的方法?
谢谢
你可以试试这个
(?<!\S)[A-Z0-9-]{5,}(?!\S)
https://regex101.com/r/zHE8nc/2
(?<! \S ) # Whitespace boundary
[A-Z0-9-]{5,} # Allowed characters, minimum 5
(?! \S ) # Whitespace boundary
假设我有一个产品列表,例如:
- 带有文字描述的品牌 HGT15K51B 商品
- 命名为 CDGL-56 的产品及描述
- 带有 TR64GQE350 并添加了 gizmo 的精美商品
- 另一品牌 106110 110cm 尺寸绿色带扇子
我只想提取产品代码。
这将是一大块连续的文本。它可能包含 A-Z 1-9 和 _ -。它总是大写的。它总是以 space 结尾。它的长度未知。它可能只是数字。它始终是字符串中最大的连续块。
我的正则表达式能力较弱,可以用正则表达式提取吗?有没有更好的方法?
谢谢
你可以试试这个
(?<!\S)[A-Z0-9-]{5,}(?!\S)
https://regex101.com/r/zHE8nc/2
(?<! \S ) # Whitespace boundary
[A-Z0-9-]{5,} # Allowed characters, minimum 5
(?! \S ) # Whitespace boundary