2017-07-25 30 views
0

想象我的產品,如列表:提取塊

    文字
  • 品牌HGT15K51B物品與描述形容它
  • 命名CDGL-56產品
  • 花式項目與TR64GQE350添加了小玩意兒
  • 帶風扇的另一個品牌106110110釐米大小的綠項目

我試圖僅提取產品代碼。

這將是一個連續文本的大塊。它可能含有A-Z 1-9和_ - 。它總是大寫。它將始終以一個空格結束。它有一個未知的長度。它可能只是數字。它始終是字符串中最大的連續塊。

我的正則表達式技巧很弱,是否可以用正則表達式提取?有沒有更好的辦法?

感謝

+0

如果他們始終遵循這樣的模式相同,你有產品名稱,後跟ID,後面的描述,那麼這是可能的。但是有太多的邊緣案例可能導致誤報,你很可能無法獲得任何可以覆蓋100%的東西。 –

+0

唯一的區別就是'(?<!\ S)[A-Z0-9 - ] +(?!\ S)' – sln

+0

是否正則表達式不適合這個問題? – Tom

回答

2

你可以試試這個

(?<!\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 
+1

設置下限很有用,已修改爲使用{5,} – Tom

+0

@Tom - 已更新至最低5。 – sln