c# – 拆分具有键值对的文本行,其中value可以为空
我需要拆分一行文字
>传递指令的一般语法是||| name | value || name | value || … .. ||| 我需要一个正则表达式来帮助我解决上述问题. 我有限的正则表达式技能的最新尝试: string SampleData = "|||env|af245g||mail_idx|39||gen_date|2016/01/03 11:40:06||docm_name|Client Statement (01.03.2015?31.03.2015)||docm_cat_name|Client Statement||docm_type_id|9100||docm_type_name|Client Statement||addr_type_id|1||addr_type_name|Postal address||addr_street_nr|||addr_street_name|Robinson Road||addr_po_box|||addr_po_box_type|||addr_postcode|903334||addr_city|Singapore||addr_state|||addr_country_id|29955||addr_country_name|Singapore||obj_nr|10000023||bp_custr_type|Customer||access_portal|Y||access_library|Y||avsr_team_id|13056||pri_avsr_id|||pri_avsr_name|||ctact_phone|||dlv_type_id|5001||dlv_type_name|Channel to standard mail||ao_id|14387||ao_name|Corp Limited||ao_title|||ao_mob_nr|||ao_email_addr||||??"; string[] Split = Regex.Matches(SampleData,"(|||(?:w+|w*||)*|)").Cast<Match>().Select(m => m.Value).ToArray(); 预期输出应如下(基于提供的样本数据字符串): > env | af245g 解决方法
我认为你让它变得比它需要的更难.这个正则表达式产生了预期的结果:
@"[^|]+|([^|]*)" 假设您正在处理单一的,格式正确的交付指令,则无需匹配起始和结束三重管道.您也不必担心双管分隔符,因为“name | value”对的“name”部分始终存在.只需查看第一个看起来像一个带有管道的名称的东西,直到下一个管道字符的所有内容都是值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |