2016-07-27 59 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