我正在写一个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/
答案 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})