Вы ввели разрыв строки внутри строкового литерала, поэтому возникает проблема с синтаксисом.
Если вы хотите разбить шаблон на несколько строк, просто используйте конкатенацию строк:
Pattern pattern = r'^((?:19|20)\d\d)[- /.]' +
r'(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$';
Или, поскольку строковые литералы, разделенные только пробельными символами, объединяются автоматически:
Pattern pattern = r'^((?:19|20)\d\d)[- /.]'
r'(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$';
Или, если вы планируете повторно использовать длинный шаблон, вы можете определить эту часть как переменную и просто использовать интерполяцию строки:
String d = r'((?:19|20)\d\d)';
String M = r'(0[1-9]|1[012])';
String y = r'(0[1-9]|[12][0-9]|3[01])';
String sep = r'[- /.]';
Pattern pattern = '^$d$sep$M$sep$y\$';