2016-07-27 56 views
0

我正在使用以下正則表達式匹配數據,如下所示。只有第二和第三個匹配不是第一個。任何人都可以幫助我知道我做錯了什麼?正則表達式如何匹配此模式

基本上我想匹配文本的第一個和第二個和最後一個段。

數據:

306279 ABC TILT ROSE LVG 
123456 ABC Chocolate PanL CH 
123456 SSS Front Chocolate CH_Q 

期望輸出

ProductNo mattype  colorcode 
--------- -------  --------- 
306279  ABC   LVG 
123456  ABC   CH 
123456  SSS   CH_Q 

我的正則表達式: 正則表達式:

^(?<productno>\d{6})\s(?<mattype>\w+)\s(?<body>(?:(?![A-Z]{2}).)*)((?<colorcode>[A-??Z]{2}(?:_[A-Z])?)?)$ 

感謝

+0

這不是交流#的問題,這是一個.NET的問題。 .NET正則表達式引擎。語言無關緊要。 –

+0

我正在用C#寫這篇文章。請忽略語言,你能幫我找到解決方案嗎? –

回答

3

您可以使用正則表達式如下:

(\d+)\s+(\w+).*\s(\w+)$ 

Working demo

此基礎上你的專欄,你可以有一個名爲團體,如:

(?<ProductNo>\d+)\s+(?<mattype>\w+).*\s(?<colorcode>\w+)$ 

Regular expression visualization

+0

太好了。第三種情況匹配時,是否可以去除_Q?我只需要有最後3個字符,或者如果它有_Q那麼,去掉_Q並得到它。 –

+0

@MukilDeepthi我猜你可以使用'(\ d +)\ s +(\ w +)。* \ s([A-Z] +)(?:_ Q)?''。在這裏檢查https://regex101.com/r/zD0hI4/2 –

+0

我喜歡你如何在回覆中放置debuggex.com圖片以幫助澄清分組。感謝分享這個資源。 – Paurian