Я нахожусь в процессе миграции из Jakarta Regexp в стандартный пакет регулярных выражений Java 6 java.util.regex
.Я заметил следующее отличие, когда не указывается начало ^
и конец $
в регулярном выражении: Jakarta Regexp возвращает true, когда регулярное выражение совпадает с частью строки, в то время как в пакете Java 6 java.util.regex нет:
String regexp = "\\d";
String value = "abc1abc";
Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher(value);
result = matcher.matches(); // returns false
Возвращает false
, тогда как:
RE re = new RE(regexp);
re.match(value); // returns true
Возвращает true
.
В чем причина этого?Я думал о жадном / ленивом сопоставлении, но в случае с JDK 6 это не имеет значения.
Есть ли еще какие-то различия, о которых я должен знать?