2014-09-01 542 views
1

我必须使用正则表达式才能得到一年的最后两位数字,但只有当4位数字存在时。当有4位数字时,我有以下正则表达式可以很好地工作。示例2014 - 14正则表达式获得年份的后两位数

^.{2} 

但是,我需要这个只在4位数字出现时才起作用。当我只有2位数字时,我正在清空我的字符串。

+1

尝试'.. $' 看起来是这个副本: http://stackoverflow.com/questions/2511588/regular-expression-extract-last-2-character"s – 2014-09-01 16:26:30

+0

@ HunterBrown你可以使用它吗?我发现我的模式现在取代了最后两个,而不是保持它们。谢谢。 – 2014-09-01 16:32:25

回答

6

只需匹配四位数字并只捕获最后两位。

^\d{2}(\d{2})$ 

然后参考捕获组#1来访问您的匹配结果。

+0

哇...我不明白为什么我会把自己复杂得像你做的那么简单。因为这是最简单的答案。顺便说一句,我认为你应该在开头加上'^',因为你可以匹配123456 – 2014-09-01 16:38:52

+0

所以很快的问题,我刚刚意识到我的模式是匹配的最后两个是正确的,但然后它取代了它们,我真的需要保留最后两个a所有的时间。有什么想法吗。 – 2014-09-01 16:41:09

+0

Java,我有这个。 @Parameter(name =“pattern”,value =“(\\ d {2})\\ d {2} $”), @Parameter(name =“replacement”,value =“”), @Parameter name =“replace”,value =“all”)}), – 2014-09-01 16:47:14

1

你可以使用这个正则表达式。

^(?(?=\d{4}$)..(\d{2}))$ 

Working demo

此正则表达式使用一个IF子句,因此,如果该字符串是4个位数然后捕获的最后两个。

enter image description here

1

你不应该因为有4位既可以工作的正则表达式。您的正则表达式正在查找字符串开头的任何2个字符。

试试这个:

(?<=\d\d)\d\d$ 

Regular expression visualization

Debuggex Demo

这是菲德在这个问题的答案不同,你不需要使用,随后指捕获组以后。只有最后两位数字是比赛的一部分。它依赖积极的后台。