2014-08-29 99 views
0

我想在三个不同的组中匹配几天,几个月和几年,所以我会知道该组[0] =年,组[1] =月,组[2] =天。

匹配日期,月份和年份字符串

Ano == Year, Anos == Years<br> 
Mes == Month, Meses == Months<br> 
Dia == Day, Dias == Days<br><br> 

输入:

1 ano 12 meses 1 dia 
    2 anos 
    1 ano 
    1 mes 
    1 dia 
    2 meses 1 dia 
    1 mes 3 dias 
    3 dias 

下面是我试过的模式:
([0-9]+)ano*([0-9]+)mes*([0-9]+)dia

输出需要:

1 12 1 
    2 
    1 
    1 
    1 
    2 1 
    1 3 
    3 


Live Example:

回答

1
(?:(\d+) anos?)?(?:(?:^|)(\d+) mes(?:es)?)?(?:(?:^|)(\d+) dias?)? 

上述图案将起作用。你也需要使用多行标志(m)。

下面是一个例子:http://regex101.com/r/wA6xJ2/1

+0

感谢您的帮助。 – TioTorres 2014-08-29 19:01:52

+0

@TioTorres您需要启用多行和全局标志。 – hjpotter92 2014-08-29 19:02:12

1

你可以试试下面的正则表达式,

(?:(\d+)\s*ano\S*)?(?:\s*(\d+)\s*mes\S*)?(?:\s*(\d+)\s*dia\S*)? 

DEMO

+0

感谢您的帮助。 – TioTorres 2014-08-29 19:02:38

+0

不客气 – 2014-08-29 19:09:32

相关问题