c# – 使用正则表达式匹配多个模式
发布时间:2020-12-16 00:22:04 所属栏目:百科 来源:网络整理
导读:我有3组:时间,日期和别针.我可以让这一行匹配这一行: 26/06/2012 33:06:12a_user_logged_in,3412234,2,3,512,3 33:06:12a_user_logged_in,26/06/2012 26/06/2012 a_user_logged_in_at,33:06:12,3 我希望将26/06/2012作为日期组,33:06:12作为时间,将34122
我有3组:时间,日期和别针.我可以让这一行匹配这一行:
我希望将26/06/2012作为日期组,33:06:12作为时间,将3412234作为引脚组. 我已经成功地做到了这一点,但只有线条必须像第一个一样处于某种模式 (?<date>[d]+/[d]+/[d]+) (?<time>[d]+:[d]+:[d]+)([ |,][a-zA-z]*)+,(?<pin>[d]{4,10}).+ 但是当我将这种模式应用于其他两种线形式时,它并不匹配. 我的问题是,无论线形是什么,如何匹配时间,日期和引脚组? 解决方法
如果您不想同时验证模式,可以从字符串的开头使用
lookaheads.由于它们实际上并没有消耗任何东西,因此在完成一个前瞻后引擎会跳回到开始状态.因此,三场比赛的顺序无关紧要:
^(?=.*(?<date>d+/d+/d+))(?=.*(?<time>d+:d+:d+))(?=.*,(?<pin>d{4,10})) 请注意,在引脚组前面.否则,您可能会将年份作为引脚(因为它也是4位数). 但话又说回来,为了您的代码的可读性,您可能希望将其分成三种模式(这也避免了捕获,因此它甚至可能不会那么慢): Pattern for date: d+/d+/d+ Pattern for time: d+:d+:d+ Pattern for pin: (?<=,)d{4,10} 这些只会在整场比赛中为您提供所需的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |