Форматирование регулярных выражений в Dart на несколько строк - PullRequest
1 голос
/ 17 апреля 2020

У меня есть

Pattern pattern = r'^((?:19|20)\d\d)[- /.]
(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$';

Мой редактор показывает ошибку в этом регулярном выражении:

enter image description here

Как это исправить?

1 Ответ

1 голос
/ 17 апреля 2020

Вы ввели разрыв строки внутри строкового литерала, поэтому возникает проблема с синтаксисом.

Если вы хотите разбить шаблон на несколько строк, просто используйте конкатенацию строк:

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\$';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...