Java正则表达式提取捕获组(如果存在)
我显然也不理解Java的正则表达式库或正则表达式 对于此字符串:Java正则表达式提取捕获组(如果存在),java,regex,Java,Regex,我显然也不理解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()) { Str
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的捕获组…group()
相当于group(0)
,并返回完整的匹配字符串。使用组(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
group()
相当于group(0)
并返回整个匹配字符串。使用组(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
使用
.group(1)
可能是因为您使用PATTERN\u FORMAT\u 1
而不是REGEX\u FORMAT\u 1
?使用.group(1)
可能是因为您使用PATTERN\u FORMAT\u 1
而不是REGEX\u FORMAT\u 1
?谢谢!我只是通过反复试验才注意到这一点,并打算回答我自己的问题,但你抢先了我一步。非常感谢!谢谢我只是通过反复试验才注意到这一点,并打算回答我自己的问题,但你抢先了我一步。非常感谢!