Я понимаю, что реализация регулярных выражений Java основана на Perl. Однако в следующем примере, если я выполняю одно и то же регулярное выражение с той же строкой, Java и Perl возвращают разные результаты.
Здесь пример Java:
public class RegexTest {
public static void main( String args[] ) {
String sentence = "This is a test of regular expressions.";
System.out.println( sentence.matches( "\\w" ) ? "Matches" : "Doesn't match" );
}
}
Это возвращает: не соответствует
Здесь пример Perl:
my $sentence = 'This is a test of regular expressions.';
print ( $sentence =~ /\w/ ? "Matches" : "Doesn't match" ) . "\n";
Это возвращает: Соответствует
Для меня результат Perl имеет смысл. Он ищет совпадение для символа одного слова. Я не понимаю, почему Java не считает это совпадением. Какая причина разницы?