我正在使用这个正则表达式来解析像"CALENDAR YEAR: 2012"
这样的字符串。有人可以推荐一个更好的字符串吗?我想使用matcher.find()(CALENDAR YEAR:\\s+)?((2\\d\\d\\d))
我想在一个小组中获得2012年。
我无法理解为什么在我这样做时打印为null:
while (myMatcher.find()) {
System.out.println(myMatcher.group(1));
System.out.println(myMatcher.group(2));
}
CALENDAR YEAR:
2012
null
null
编辑:如果代码使用匹配,我将如何更改表达式?我还想解析字符串中的年份?
答案 0 :(得分:0)
阅读REGEXP手册。
显然,您不知道何时使用?
字符,何时不使用。{1}}字符。或何时使用()
...
你可以离开它。
CALENDAR YEAR:\s+(\d{4})
应该已经做到了。但是你只是将随机字符扔进你的正则表达式,而不是查看周围的各种例子。
答案 1 :(得分:0)
您根本不需要使用额外的组 - 使用正则表达式
(?<=CALENDAR YEAR: )2\\d{3}(?!\\d)
...结果将在
中myMatcher.group(0)