我显然不了解Java的正则表达式库或正则表达式。
这个字符串:
String text = "asdf 2013-05-12 asdf";
这个正则表达式在我脸上爆炸:
String REGEX_FORMAT_1 = ".+?([0-9]{4}\\s?-\\s?[0-9]{2}\\s?-\\s?[0-9]{2}).+";
Matcher matcher_1 = PATTERN_FORMAT_1.matcher(text);
if(matcher_1.matches()) {
String matchedGroup = matcher_1.group();
...
}
语义上这对我有意义,但似乎我完全误解了一些东西。正则表达式在一些在线正则表达式编辑器(如regex101)中运行良好,但在其他编辑器中则没有。有人可以帮我理解为什么我没有得到包含2013-05-12 ...
的捕获组答案 0 :(得分:4)
group()
相当于group(0)
并返回整个匹配的字符串。使用group(1)
拉出第一个匹配的组。
String text = "asdf 2013-05-12 asdf";
String regex = ".+?([0-9]{4}\\s?-\\s?[0-9]{2}\\s?-\\s?[0-9]{2}).+";
Matcher matcher = Pattern.compile(regex).matcher(text);
if (matcher.matches()) {
String matchedGroup = matcher.group(1);
System.out.println(matchedGroup);
}
输出:
2013-05-12