使用正则表达式:在这种情况下如何排除捕获?

时间:2015-12-23 11:04:34

标签: c# regex ignore regex-group

我正在写一个C#应用程序。我正在尝试构建一个Regex以匹配这种表达式(4个示例),以获得6个数据:

名称值1 Unity值2值3日期
6-苄基腺嘌呤D< 0,01 mg / kg 0,01 5 19/11/2015
3,4-二氯苯胺0,28 mg / kg 0,01 0,06 20/11/2015
呋喃丹(+ 3-羟基)D< 0,28 mg / kg 0,01 0,5 19/11/2015
Chlorprophame(+ 3-Chloroanilin 0,28 mg / kg 0,01 5 19/11/2015

==>根据这种模式:
示例1

 - Group #1 : Carbendazime(+Benomyl)  
 - Group #2 :   
 - Group #3 : 0,28   
 - Group #4 : mg/kg    
 - Group #5 : 0,01       
 - Group #6 : 5  
 - Group #7 : 19/11/2015

示例2

- Group #1 : 3,4-dichloroaniline  
 - Group #2 : D < 0,28  
 - Group #3 : 0,28   
 - Group #4 : mg/kg    
 - Group #5 : 0,01  
 - Group #5 : 0,06  
 - Group #7 : 20/11/2015

我试过这个正则表达式:

 (.+(?=D < )|(.+))((D\s<\s)?(\d+,?\d*))\s(mg/kg)\s(\d+,?\d*)\s(\d+,?\d*)\s(\d{1,2}\/\d{1,2}\/20\d{1,2})

但如果这样可行,我在右侧捕获组中找不到合适的值。 我怎么能为它写出最好的正则表达式?

我使用此工具寻求帮助,这很棒:http://www.regexr.com/

1 个答案:

答案 0 :(得分:1)

这是&#34; stribizhev&#34;的答案,它完全符合我的要求: ([^ \ s] +)\ s +((?:D&lt;)?\ d +,\ d +)\ s +([az] {2} / [az] {2})\ s +(\ d +,\ d + )\ S +(\ d +(?:\ d +)?)\ S +(\ d {1,2} / \ d {1,2} / \ d {4})